Page 22 -
P. 22
> x <- c(a = 1, b = 2, c = 3)
> x["d"]
<NA>
NA
존재하지 않는 원소에 접근하려고 했기 때문에 오류가 발생했다고 생각하기 쉽다. 하지만 결과는
오류가 아닌 이름과 값이 모두 결측 값인 벡터인 것을 볼 수 있다.
> names(x["d"])
[1] NA
이름이 있을 때와 없을 때가 섞여 있더라도 선택하는 데 사용된 문자형 벡터 길이와 동일한 길이
로 결과 벡터를 얻는다.
> x[c("a", "d")]
a <NA>
1 NA
2.1.6 원소 추출하기
대괄호([ ])를 사용하여 벡터의 부분 집합을 구한다면, 이중 대괄호([[ ]])로는 벡터의 원소를 구
할 수 있다. 벡터를 사탕이 들어 있는 상자 10개라고 하자. [ ]는 사탕 상자 3개를 선택할 수 있다
면, [[ ]]는 상자를 열어 그 안에 있는 사탕을 얻을 수 있다.
물론 단순 벡터는 [ ]와 [[ ]] 모두 한 원소를 가지며, 그 결과는 같다. 하지만 어떤 경우에는 결
과가 다르다. 예를 들어 이름이 정해진 벡터를 서브세팅할 때는 결과가 다르다.
> x <- c(a = 1, b = 2, c = 3)
> x["a"]
a
1
> x[["a"]]
[1] 1
다시 사탕 상자 비유로 돌아가 설명해 보자. x["a"] 인수는 사탕 상자 a를 돌려주는 반면,
x[["a"]]는 사탕 상자 a에서 사탕을 꺼내 준다고 할 수 있다.
[[ ]]는 한 요소만 추출하므로 당연히 요소가 2개 이상 있는 벡터에는 사용할 수 없다.
56
r교과서_07.indd 56 2020-04-09 오후 4:21:24