더북(TheBook)

R은 이러한 연산 표현식을 요소별 비교라고 해석한다. 즉, c(1, 2) > 2는 c(1 > 2, 2 > 2)와 동일한 의미다.

길이가 긴 벡터가 길이가 짧은 벡터보다 배수라면 다중 요소 수치형 벡터끼리도 비교 가능하다.

> c(1, 2) > c(2, 1)
[1] FALSE TRUE

앞 코드는 c(1 > 2, 2 > 1)라는 의미다. 길이가 서로 다른 벡터를 비교할 경우를 알아보자.

> c(2, 3) > c(1, 2, -1, 3)
[1] TRUE TRUE TRUE FALSE

살짝 복잡하게 보일 수 있다. 이는 길이가 짧은 벡터를 반복해서 적용한다고 생각하면 된다. 결과적으로 c(2 > 1, 3 > 2, 2 > -1, 3 > 3)를 의미한다. 자세히 보면, 길이가 긴 벡터에 있는 모든 요소에서 비교가 끝날 때까지는 짧은 벡터 안의 요소들을 계속해서 재활용하는 것을 알 수 있다.

R에는 다음과 같은 이진 논리 연산자가 있다. ==는 동일함, >는 큼, >=는 크거나 같음, <는 작음, <=는 작거나 같음을 의미한다. 이외에도 R에는 %in% 같은 논리 연산자가 있다. 이는 왼쪽 벡터에 있는 원소가 오른쪽 벡터 안에 있는지 판단한다.

> 1 %in% c(1, 2, 3)
[1] TRUE
> c(1, 4) %in% c(1, 2, 3)
[1] TRUE FALSE

보다시피 수치를 비교하는 데 사용하는 연산자와 달리 %in% 연산자는 길이가 다른 벡터 간에도 원소를 재활용하지 않는다. 앞 예제에서는 대신에 왼쪽 벡터의 원소들을 차례로 반복 적용하여 실제로는 c(1 %in% c(1, 2, 3), 4 %in% c(1, 2, 3))처럼 동작한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.