在列表中拼接名称,并向特定字符串添加字符?
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"
这正是我所需要的,但我无法将 tail
和 gregexpr
应用到我的姓名列表中,因此它会同时执行所有操作。
感谢您的帮助!
抱歉我的格式不佳仍在调整中。
如果您的文件名在字符向量中,您可以使用 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 '))
你好:我目前有一个文件名列表(100s),在某些点上由多个“/”分隔。我想在每个名称中找到最后一个“/”并将其替换为“/Old”。我尝试过的一个简单例子:
我已经设法对列表中的单个文件名执行此操作,但似乎无法将其应用于整个列表。
Test<- "Cars/sedan/Camry"
然后我知道我尝试在名称中找到最后一个“/”我尝试了以下操作:
Last <- tail(gregexpr("/", Test)[[1]], n= 1)
str_sub(Test, Last, Last)<- "/Old"
这给了我
Test[1] "Cars/sedan/OldCamry"
这正是我所需要的,但我无法将 tail
和 gregexpr
应用到我的姓名列表中,因此它会同时执行所有操作。
感谢您的帮助!
抱歉我的格式不佳仍在调整中。
如果您的文件名在字符向量中,您可以使用 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 '))