두 개의 R 질문 :
- 변수 의 유형 (에서 반환
typeof
)과 클래스 (에서 반환) 의 차이점은 무엇입니까class
? 예를 들어 C ++ 언어와 비슷한 차이가 있습니까? - 가능한 유형과 변수 클래스는 무엇입니까?
답변:
R에서 모든 "객체"에는 a mode
및 a가 class
있습니다. 전자는 객체가 메모리 (숫자, 문자, 목록 및 함수)에 저장되는 방식을 나타내고, 후자는 추상 유형을 나타냅니다. 예를 들면 :
d <- data.frame(V1=c(1,2))
class(d)
# [1] "data.frame"
mode(d)
# [1] "list"
typeof(d)
# list
보시다시피 데이터 프레임은 메모리에 저장 list
되지만 data.frame
객체 로 래핑됩니다 . 후자는 print
사용자 정의 동작과 같은 오버로딩 함수뿐만 아니라 멤버 함수의 사용을 허용합니다 .
typeof
( storage.mode
)는 일반적으로 mode
항상 그런 것은 아니지만 동일한 정보를 제공합니다 . 지목 사항:
typeof(c(1,2))
# [1] "double"
mode(c(1,2))
# [1] "numeric"
R 특정 함수 typeof 는 R 객체의 유형을 반환합니다.
함수 모드 는 Becker, Chambers & Wilks (1988)의 의미에서 객체 모드에 대한 정보를 제공하며 S 언어의 다른 구현과 더 호환됩니다.
제가 위에서 게시하는 링크는 모든 기본 R의 목록이 포함 basic types
(벡터,리스트 등) 모두 compound objects
잘하는 방법의 예처럼 (요인과 data.frames을) mode
, typeof
및 class
각 유형에 대해 관련이 있습니다.
oldClass(matrix(1:10, 2,5)) # NULL
type
실제로 R 에서 사용할 수있는 다양한 데이터 구조를 나타냅니다. R 언어 정의 매뉴얼 의이 토론은 객체와 유형에 대해 시작하는 데 도움이 될 수 있습니다.
반면 class
에 R에서 기대하는 것보다 다른 것을 의미합니다. 로부터 R 언어 정의 (R 버전과 함께 제공) 수동 :
2.2.4 클래스
R은 주로 class 속성을 통해 제어 되는 정교한 클래스 시스템 1을 가지고 있습니다. 이 속성은 객체가 상속하는 클래스 목록을 포함하는 문자형 벡터입니다. 이것은 R의 "일반적인 방법"기능의 기초를 형성합니다.
이 속성은 사용자의 제한없이 가상으로 액세스하고 조작 할 수 있습니다. 개체에 클래스 메서드가 예상하는 구성 요소가 실제로 포함되어 있는지 확인하지 않습니다. 따라서 클래스 속성 변경은주의해서 수행해야하며 사용 가능한 경우 특정 생성 및 강제 기능이 선호되어야합니다.