2012-12-06 3 views
0

벡터 a의 요소가 벡터 b의 요소 사이에 있거나 R에없는 요소인지 확인하고 싶습니다. 어떻게해야합니까? 의미가 2에서 4 사이의 3이고, 그렇다면 결과에 나타납니다. 그렇지 않으면 나타나지 않습니다. 그냥 내가 벡터의 첫 번째 요소와 마지막 요소를 확인하고 싶지 않다고 언급했다. 결과는 3사이에 있음

 a = c(1, 3, 8, 12) 
     b = c(0, 2, 4, 6, 8) 
+6

나는 다소 모호한 질문을 찾습니다. 당신의 예에서 산출물이 무엇을 기대합니까? 그 이유는 무엇입니까? – NPE

+0

여기에 맞을지도 모릅니다. res <- findInterval (a [-c (1, length (a))], b); % b [c (1, length (b))]]] – mdsumner

답변

-1

왜 루프를 사용하지 않으시겠습니까?

> a = c(1, 3, 8, 12) 
> b = c(0, 2, 4, 6, 8) 
> for (i in 2:(length(a)-1)){ if (b[i] < a[i] && a[i] <b[i+1]) {print (a[i])}} 
[1] 3 
+0

왜 대답이 다운 투표되었는지 궁금합니다. 그것은 정답으로 받아 들여집니다. 내 대답이 너무 직관적입니까 (아무도 입력하지 않아도됩니까)? 유권자들이 스스로를 정당화 해 주시겠습니까? 또는 제안을 제공합니까? – HongboZhu

-1
다음

나는 그것을 할 것입니다 방법이어야한다 : a[4] 이후

> Interval <- cut(a, b, FALSE)   ## Which 'slot' of b does a fit into? 
> Interval 
[1] 1 2 4 NA 
> Interval == 1:length(a)     ## Does it fit sequentially? 
[1] TRUE TRUE FALSE NA 

완전히 b 범위 밖에, 당신은 나중에 FALSE 모든 NA 값을 대체 할 수 있습니다 (예 : Vec[is.na(Vec)] <- F) 또는 잘라 내기 기능에서 b 대신 c(b,max(a))을 사용하십시오.

+0

'findInterval'이이 사용 사례에 대해 더 명확 할 수 있습니다. – hadley

관련 문제