2017-03-07 9 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)&|を切り替えることができるだろうと思ったが、私は取得できませんでした正解。

test_valuesベクトルが動的に変化する(長さが0から3まで変化する)ため、grepl(test_values[1], test_list) & grepl(test_values[2], test_list)というコマンドを使用しないようにしたいので、これを考慮する必要があります。

答えて

7

我々は、grepl

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

素晴らしいとあなたの助けの@akrunに感謝をReduceを使用することができます! – Agrosel