R:检查向量的多个元素是否出现在字符串向量中

时间:2017-03-07 18:07:04

标签: r list vector grep grepl

我正在尝试创建一个函数,检查向量的所有元素是否出现在字符串向量中。测试代码如下:

test_values = c("Alice", "Bob")
test_list = c("Alice,Chris,Mark", "Alice,Bob,Chris", "Alice,Mark,Zach", "Alice,Bob,Mark", "Mark,Bob,Zach", "Alice,Chris,Bob", "Mark,Chris,Zach")

我希望此输出为FALSE TRUE FALSE TRUE FALSE TRUE FALSE

我首先想到我可以在命令|中切换&grepl(paste(test_values, collapse='|'), test_list),以便当Alice和Bob 两者时字符串而不是其中任何一个出现时,但我无法得到正确的答案。

我也不想使用命令:grepl(test_values[1], test_list) & grepl(test_values[2], test_list),因为test_values向量将动态变化(从长度0变为3),所以我正在寻找一些可以考虑这一点的东西。

1 个答案:

答案 0 :(得分:7)

我们可以将Reducegrepl

一起使用
Reduce(`&`, lapply(test_values, grepl, test_list))
#[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE