두 벡터가 같은 값을 담고 있는지는 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