2013-05-30 2 views
1

이것은 바보 같은 질문처럼 보일 수 있지만 (쉬운) 해결책을 찾는 데 시간을 투자 한 후에 찾을 수 없습니다.목록에서 벡터 검색

나는 벡터의 목록이 있습니다

l <- list(c(1, 2), c(5, 10)) 

을 나는 주어진 벡터 --- 예, c(1, 2)에 대한 ---이 목록에 있는지 여부를 테스트 할. 나는 "간단하게"접근 방식이 작동 것이라고 생각 :

c(1, 2) %in% l 

을하지만 결국

[1] FALSE FALSE 

나는 다음과 같은 해결책을 발견 반환

any(sapply(l, function(x) { all(x == c(1, 2)) })) 

을하지만, 그래서 매우 복잡 그것이 가장 간단한 옵션인지 정말 궁금합니다. 벡터 목록에서 벡터를 테스트하는 간단한 방법이 있습니까?

+0

주어진 벡터를 검색 할 수있는 함수로 둘러 치면 번거롭지 않게됩니다. 그렇다면 유일한 문제는'isTRUE (all.equal())'또는'identical'와 같은 것을 대신 사용할지 생각해 보는 것입니다. – joran

답변

3

개체를 다루므로 == 연산자가 이상적이지 않습니다. 약간 간단한 방법은 다음과 같습니다는 기능 match에 대한 호출이기 때문에

any(sapply(l, identical, y=c(1,2))) 

%in% 연산자는 작동하지 않습니다. 그것은 벡터로 l를 읽습니다. 즉, 수행중인 작업은 다음과 같습니다.

for(i in 1:length(c(1,2))) 
c(1,2)[i]==l[[i]]