그것의 y 값 중 하나 인 모든 행을 선택해야한다고 표시하십시오 exemple 또한 Y 이해하는 최선의 방법으로 X로부터 값이다 in x (?) 예에서 11과 12가 "월"에 나타나는 모든 경우입니다.
예제를 보면 동작을 이해할 수 없다면 직접 시도해보십시오. 예를 들어, 당신이 할 수 있습니다 :
> c(1,2,3) %in% c(2,4,6)
[1] FALSE TRUE FALSE
는 그래서
%in%
당신에게 첫 번째 인수 (
%in%
전에 하나)의 각 항목에 해당
TRUE
및
FALSE
값의 벡터를 제공 보인다. 의 다른 해보자 :
을 확인
> c(1,2,3) %in% c(2,4,6,8,10,12,1)
[1] TRUE TRUE FALSE
: 첫 번째 인수의 첫 번째 항목은 등 어느 곳에서나 두 번째 인수에 발견하고 경우 반환 된 벡터의 첫 번째 항목이 TRUE
입니다. 당신이 match()
를 사용하여 얻을 하나에 그 결과를 비교 :
> match(c(1,2,3), c(2,4,6,8,10,12,1))
[1] 7 1 NA
그래서 match()
와 %in%
의 차이는 전자가 첫 번째 인수 당신에게 각 항목에 대한 첫 경기의 두 번째 인수의 실제 위치를 준다이다, %in%
은 첫 번째 인수의 각 항목이 두 번째 인수에 나타나는지 여부를 알려주는 논리 벡터를 제공합니다.
위캄 (Wickham)의 책 예와 관련하여 month
은 다양한 비행이 이루어지는 달을 나타내는 값의 벡터입니다. 그래서 같은 인수를 위해서, 무엇인가 : 당신이 질문 에 대한 답변에 그 벡터를 설정 할 수있는 %in%
연산자를 사용
> month <- c(2,3,5,11,2,9,12,10,9,12,8,11,3)
개월 11 또는 12이 비행인가? 이 같은 : 당신에게 즉 참/거짓 값 목록 논리적 벡터를 제공
> month %in% c(11,12)
[1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE
[13] FALSE
. filter()
함수는 해당 논리 벡터를 사용하여 flights
테이블에서 해당 행을 선택합니다. 함께 사용하면 filter
및 %in%
은 질문에 답변합니다 11 개월 또는 12 개월 이내에 발생하는 모든 항공편은 무엇입니까?
당신은 주위 %in%
을 설정하는 대신이 요청하는 경우 :
> c(11,12) %in% month
[1] TRUE TRUE
당신이 정말 달 11 월 (12)의 각각의 모든 항공편을 이 있습니까 요구하는지?
큰 벡터가 두 개의 값만있는 벡터에 있는지 여부를 묻는 것이 이상하게 보일 수도 있습니다. x %in% y
을 으로 읽는 것을 고려하십시오. 각각 x
의 값은 y
입니까?
나는 "x is in y"로 '% y %'를 읽는 경향이있다. '% in % '연산자는'match'의 유용한 래퍼입니다. 여기서 y는'match'에 대한 "table"인수입니다. 즉, y는 비교에 사용되는 값들의 집합입니다. '% in % '연산자는 x의 원소가 y 인 경우 TRUE를 가진 x의 길이를 논리 벡터로 반환합니다. 비슷하게'match'는 x의 inteder vector를 테이블의 y의 위치 (인덱스)와 함께 반환합니다. – lmo
SQL에 익숙하다면 SQL 문과 동일합니다. 'select * from flights where month in (11, 12)'. –
@lmo 혼란스러운 점이라고 생각합니다. 많은 가치를 지닌 벡터가 2 개의 값을 갖는 벡터에 "in"될 수 있다는 것은 직관이 다릅니다."x의 원소가 y"인 것을 읽으면 x의 모든 원소가 y에 포함될 필요가 없다는 것을 조금 더 쉽게 이해할 수 있습니다. – Caleb