查找并替换完全匹配的部分字符串(gsub)

时间:2019-07-11 12:16:00

标签: r replace find rstudio gsub

我有一个带有变量(列表)的数据框,可以在其中找到特殊符号。请在下面找到示例和我的数据框:

 df_1 <- data.frame(id=1:6,
 path.vec = I(list("apple", "lemon", "melon",c("apple", "banana","melon"),
 c("(Tuesday)/lemon", "lemon_Tuesday", "grape/ginger_peppers"),
 c("apple", "lemon", "apple"))))
 Recombine the path

df_1$recombined = as.character(map(df_1$path.vec, paste, collapse = " > "))

我要做的只是在df_1 $ recombined中查找并替换完全匹配的内容

我一直在尝试使用gsub

df_1$recombined <- gsub("\<(Tuesday)/lemon\>", "Tuesday", df_1$recombined, fixed =T)

这看起来像正在运行,但它没有替换任何值。 我一直在浏览,发现gsub不能与特殊字符配合使用,因此我尝试使用反斜杠

 df_1$recombined <- gsub("\<\(\Tuesday\)\/lemon\>", "Tuesday", df_1$recombined, fixed =T)

,但括号和方括号不变:

 df_1$recombined <- gsub("\<[(]Tuesday[)]/lemon\>", "Tuesday", df_1$recombined, fixed =T)

两者均运行平稳,但未更改任何值。

最终我想要以下输出:

final.recombined
apple
lemon
melon
apple > banana > melon
Tuesday > Tuesday > Grape
apple > lemon > apple

我认为这很容易,但是我无法理解我在做什么错,并且由于特殊字符gsub是在这种情况下使用的最佳功能?我将用特殊字符替换任何字符串,以便从2个单词得到一个。

谢谢!

1 个答案:

答案 0 :(得分:-1)

感谢以下所有我解决的人:

 gsub("\\(Tuesday\\)\\/lemon", "Tuesday", df_1$recombined)

在任何特殊字符解决它之前使用双转义符。我可以认为这是一个通用的解决方案吗?