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

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

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个回答

8
我们可以使用greplReduce进行操作。
Reduce(`&`, lapply(test_values, grepl, test_list))
#[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接