Agr*_*sel 3 grep r list vector 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")
Run Code Online (Sandbox Code Playgroud)
我希望这个输出FALSE TRUE FALSE TRUE FALSE TRUE FALSE.
我首先想到我能够在命令中切换|到当Alice和Bob 都在字符串中而不是当它们中的任何一个出现时,但是我无法得到正确的答案.&grepl(paste(test_values, collapse='|'), test_list)
我也不想使用命令:grepl(test_values[1], test_list) & grepl(test_values[2], test_list)因为test_values向量将动态改变(从长度0到3不等),所以我正在寻找一些可以考虑到这一点的东西.
我们可以使用Reduce与grepl
Reduce(`&`, lapply(test_values, grepl, test_list))
#[1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)