在列表中拼接名称,并向特定字符串添加字符?

Splicing names in a list, and adding characters to a specific string?

你好:我目前有一个文件名列表(100s),在某些点上由多个“/”分隔。我想在每个名称中找到最后一个“/”并将其替换为“/Old”。我尝试过的一个简单例子:

我已经设法对列表中的单个文件名执行此操作,但似乎无法将其应用于整个列表。

Test<- "Cars/sedan/Camry" 

然后我知道我尝试在名称中找到最后一个“/”我尝试了以下操作:

Last <- tail(gregexpr("/", Test)[[1]], n= 1)
str_sub(Test, Last, Last)<- "/Old"

这给了我

Test[1] "Cars/sedan/OldCamry"

这正是我所需要的,但我无法将 tailgregexpr 应用到我的姓名列表中,因此它会同时执行所有操作。

感谢您的帮助!

抱歉我的格式不佳仍在调整中。

如果您的文件名在字符向量中,您可以使用 stringr 包中的 str_replace() 为此:

items <- c(
  "Cars/sedan/Camry",
  "Cars/sedan/XJ8",
  "Cars/SUV/Cayenne"
)

stringr::str_replace(items, pattern = "([^/]+$)", replacement = "Old\1")
[1] "Cars/sedan/OldCamry" "Cars/sedan/OldXJ8"   "Cars/SUV/OldCayenne"

保留 stringi 函数作为替代。

如果您的数据框是“df”并且您的文本位于名为“text”的列中。

library(stringi)
    df %>% 
      mutate(new_text=stringi::stri_replace_last_fixed(text, '/', '/Old '))