데이터 프레임일 때는 다음과 같다.
> 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())을 표시한다.