더북(TheBook)

두 벡터가 같은 값을 담고 있는지는 identical( ) 함수로 알 수 있다.

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

%in% 연산자는 어떤 값이 벡터에 포함되어 있는지를 알려준다.

> "a" %in% c("a", "b", "c")
[1] TRUE
> "d" %in% c("a", "b", "c")
[1] FALSE

벡터 전체 값에 대한 연산을 한 번에 수행하려면 벡터를 마치 하나의 숫자처럼 생각하고 연산을 수행하면 된다. 이와 같이 데이터 전체에 대해 수행하는 연산은 R의 특징 중 하나로, 각 요소별로 연산을 수행하는 경우에 비해 실행 속도가 빠르기 때문에 자주 사용한다. 더 자세한 내용은 ‘3장. R 프로그래밍’에서 다시 알아본다.

> x <- c(1, 2, 3, 4, 5)
> x + 1
[1] 2 3 4 5 6
> 10 - x
[1] 9 8 7 6 5

같은 방법으로 == 또는 != 연산자를 사용해 두 벡터에 저장된 값들을 한 번에 비교할 수 있다. 그러나 흔히 if 문 등의 조건문에서는 단 하나의 참 또는 거짓 값을 사용해야 하기 때문에 ==, !=가 아니라 앞서 설명한 identical( )을 사용해야 한다는 점을 기억하기 바란다. 흔히 실수하기 쉬운 부분이다.

> c(1, 2, 3) == c(1, 2, 100)
[1] TRUE TRUE FALSE
> c(1, 2, 3) != c(1, 2, 100)
[1] FALSE FALSE TRUE

벡터를 집합Set으로 취급해 집합 간 합집합, 교집합, 차집합을 계산할 수 있다.

> union (c("a", "b", "c"), c("a", "d"))      # 합집합 
[1] "a" "b" "c" "d"
> intersect (c("a", "b", "c"), c("a", "d"))  # 교집합
[1] "a"
> setdiff (c("a", "b", "c"), c("a", "d"))    # 차집합
[1] "b" "c"

집합 간 비교에는 setequal( )을 사용한다.

> setequal (c("a", "b", "c"), c("a", "d"))
[1] FALSE
> setequal (c("a", "b", "c"), c("a", "b", "c", "c"))
[1] TRUE
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.