2017-03-07 33 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

相關問題