더북(TheBook)

데이터 프레임일 때는 다음과 같다.

> x <- data.frame(a = c(1, 2), b = c(TRUE, FALSE))
> class(x)
[1] "data.frame"
> typeof(x)
[1] "list"
> str(x)
'data.frame':   2 obs. of   2 variables:
 $ a: num 1 2
 $ b: logi TRUE FALSE

typeof() 함수는 객체 하위 레벨의 내부 타입을 반환하고, class() 함수는 객체 상위 레벨의 클래스를 반환한다는 것을 알 수 있다. 이전에 언급한 대로 data.frame은 본질적으로 길이가 같은 요소들로 된 리스트 객체다. 따라서 데이터 프레임은 데이터 프레임에 관련한 함수가 이를 인식할 수 있게 data.frame이라는 클래스를 갖는다. 하지만 typeof() 함수는 여전히 이것이 내부적으로는 리스트라는 사실을 알려 준다.

이 주제는 S3 객체 지향 프로그래밍 메커니즘과 관련이 있으며 이후 자세히 알아볼 것이다. 그러나 여기서 class()typeof() 함수의 차이점을 알아보는 것은 여전히 유용하다.

앞 결과에서 이전 장에서도 소개한 str() 함수는 객체 구조를 볼 수 있다. 객체가 벡터라면 일반적으로 내부 타입(typeof())을 표시한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.