首页 > 解决方案 > 查找和替换完全匹配的部分字符串 (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 个单词中得到一个。

谢谢!

标签: rreplacefindrstudiogsub

解决方案


谢谢大家我已经解决了以下问题:

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

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


推荐阅读