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개 이상 있는 벡터에는 사용할 수 없다.
> x[[c(1, 2)]]
Error in x[[c(1, 2)]] :
attempt to select more than one element in vectorIndex