더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.