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

R: Checking if mutliple elements of a vector appear in vector of strings

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

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 both 在字符串中而不是当它们中的任何一个出现时,但我无法得到正确的答案。

我也不想使用命令:grepl(test_values[1], test_list) & grepl(test_values[2], test_list) 因为 test_values 向量会动态变化(长度从 0 到 3 不等),所以我正在寻找可以将其纳入的内容帐号。

我们可以使用 Reducegrepl

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