r - 查找和替换完全匹配的部分字符串 (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 个单词中得到一个。
谢谢!
解决方案
谢谢大家我已经解决了以下问题:
gsub("\\(Tuesday\\)\\/lemon", "Tuesday", df_1$recombined)
在任何特殊字符解决它之前使用双重转义。我可以认为这是一个通用的解决方案吗?
推荐阅读
- react-native - 如何在 React-Native for Web 上更改 React-Native-Elements 库的 Tab 组件上的选项卡颜色?
- php - Laravel如何在虚拟主机上加载上传的图片
- json - 将json响应添加到flutter中的列表
- javascript - 有没有比 setTimeOut(fn, 0) 更好的选择?
- python - 解决生成位置参数冲突类型错误的函数调用
- javascript - 未捕获的类型错误:无法使用 JS 读取 null 的属性“addEventListener”以获得平滑滚动效果
- android - android studio 不显示布局预览新版本(Android Studio 北极狐 | 2020.3.1)
- node.js - 如何使用 React/TypeScript 阅读 MSK 集群的主题?
- kotlin - 将 Braintree dropin UI 集成到 Kotlin Jetpack Compose
- sharepoint - 如何获取网站集的第二阶段 SharePoint 2016 回收站的大小?