【发布时间】:2019-05-16 18:43:14
【问题描述】:
使用 R,我有一长串要在数据集中搜索的关键字。其中一个关键字需要用括号括起来才能被包含在内。
我一直在尝试将关键字列表中的括号替换为\\,然后是括号,但没有成功。如果有办法修改grepl() 函数以识别它们,那也会有所帮助。这是我正在尝试完成的示例:
patterns<-c("dog","cat","(fish)")
data<-c("brown dog","black bear","salmon (fish)","red fish")
patterns2<- paste(patterns,collapse="|")
grepl(patterns2,data)
[1] TRUE FALSE TRUE TRUE
我想salmon (fish) 给TRUE,red fish 给FALSE。
谢谢!
【问题讨论】:
-
您需要
patterns<-c("dog","cat","\\(fish\\)")来表示括号。 -
是的,有没有办法将“模式”字符串中的所有括号替换为斜杠前面?我有一长串关键字,想一次性为带括号的关键字做这些。
-
patterns <- gsub("\\(", "\\\\(", patterns); patterns <- gsub("\\)", "\\\\)", patterns); -
或者,一口气:
gsub("([()])","\\\\\\1", patterns)->[1] "dog" "cat" "\\(fish\\)" -
此时,我们中的一个人应该写一个答案。我提名@iod。最巧妙的解决方案 + 你需要声誉 ;)
标签: r string parentheses grepl