2017-03-07 74 views
3

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

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),所以我正在寻找一些东西来考虑这一点。

回答

7

我们可以使用Reducegrepl

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

真棒,感谢您的帮助@akrun! – Agrosel

相关问题