3.4.3 기타 구조 인덱싱

3.4.3 기타 구조 인덱싱

이번에는 R의 인덱싱 연산자들이 특정 구조에 국한되지 않고 클래스 메서드를 통해 확장될 수 있다는 점을 살펴볼게요. 특히 데이터 프레임과 환경에서의 인덱싱 동작도 함께 알아보아요.

출처: R Language Definition

본문

[ 연산자는 클래스 메서드를 추가할 수 있는 제네릭 함수이고, $[[ 연산자도 마찬가지예요. 따라서 어떤 구조에 대해서든 사용자 정의 인덱싱 연산을 만들 수 있어요. 예를 들어 [.foo 같은 함수는 첫 번째 인자로 인덱싱할 구조를 받고, 나머지 인자로 인덱스들을 받는 방식으로 호출돼요. $의 경우에는 x$"abc" 형태를 사용하더라도 인덱스 인자의 mode가 "symbol"이에요. 클래스 메서드가 기본 메서드와 반드시 같은 방식으로 동작하지는 않는다는 점을 알아 두는 게 중요해요. 예를 들어 부분 일치(partial matching) 측면에서 차이가 있을 수 있어요.

[에 대한 클래스 메서드 중 가장 중요한 예는 데이터 프레임을 위한 것이에요. 여기서 자세히 설명하지는 않지만([.data.frame 도움말을 참고하세요), 대략적으로 말하면 두 개의 인덱스가 주어지면, 하나가 비어 있더라도 기본적으로 같은 길이의 벡터들로 이루어진 리스트 구조에 대해 행렬처럼 인덱싱을 수행해요. 인덱스가 하나만 주어지면 열(column)의 리스트를 인덱싱하는 것으로 해석되고, 이때 drop 인자는 무시되며 경고가 발생해요.

기본 연산자 $[[는 환경(environment)에도 적용할 수 있어요. 이때는 문자 인덱스만 허용되고 부분 일치는 수행되지 않아요.

더 알아보기 (Learn more)

출처: R Language Definition - 기타 구조 인덱싱