我尝试设置grep搜索以明确匹配字符串。
这是我的主题载体:
a <- c("a1", "a10", "a1, a2", "a3, a1", "a100", "b1", "c1b1")
我的疑问:
b <- c("a1", "b1")
和预期的输出:
a[c(1, 3, 4, 6)]
[1] "a1" "a1, a2" "a3, a1" "b1"
到目前为止我尝试了什么。我使用|
搜索b
中的每个a
值。包括$
停止并不能完全正确地完成工作:
a[grep(paste(b, collapse = "$|"), a)]
[1] "a1" "a3, a1" "b1" "c1b1"
提前致谢。
答案 0 :(得分:3)
您可以添加单词边界以明确地匹配您需要的内容:
a[grep(paste0("\\b", b, "\\b", collapse = "|"), a)]
#[1] "a1" "a1, a2" "a3, a1" "b1"
正则表达式是"\\ba1\\b|\\bb1\\b"
如果放入(现已删除)@docendo答案,无需子集a
,您可以使用value
的参数grep
直接检索值,设置为{{1} }:
TRUE