2017-03-07 3 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까지 다양하기 때문에) 다음 명령을 사용하지 않을 것입니다. 그래서 이것을 고려할 항목을 찾고 있습니다.

답변

7

우리는 grepl

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

굉장하여 도움말 @akrun에 대한 감사를 Reduce을 사용할 수 있습니다! – Agrosel