use*_*345 5 string r parentheses grepl
使用 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
Run Code Online (Sandbox Code Playgroud)
我愿意salmon (fish)付出TRUE,也red fish愿意付出FALSE。
谢谢你!
正如 @joran 在评论中指出的,该模式应该如下所示:
patterns<-c("dog","cat","\\(fish\\)")
Run Code Online (Sandbox Code Playgroud)
s\\将告诉 R 在搜索模式时按字面意思读取括号。
如果您不想手动进行更改,最简单的方法是:
patterns <- gsub("([()])","\\\\\\1", patterns)
Run Code Online (Sandbox Code Playgroud)
这将导致:
[1] "dog" "cat" "\\(fish\\)"
Run Code Online (Sandbox Code Playgroud)
如果您不太熟悉正则表达式,这里会发生的情况是它会查找方括号内的任何一个字符。周围的圆括号告诉它保存找到的与内容匹配的任何内容。然后,第二个参数中的前四个斜杠告诉它用两个斜杠替换找到的内容(每两个斜杠转换为一个斜杠),并告诉\\1它添加从第一个参数中保存的任何内容 - 即(或)。
| 归档时间: |
|
| 查看次数: |
6850 次 |
| 最近记录: |