Mode, Class 및 Type of R 객체의 차이점이 무엇인지 궁금합니다. R 객체의 유형은 typeof () 함수, mode by mode () 및 class by class ()로 얻을 수 있습니다.
또한 내가 놓친 다른 유사한 기능과 개념은 무엇입니까?
감사합니다.
답변
은 class()
/ 정의 객체 R. 그래서 객체 지향 프로그래밍의 관점에에서 무엇 “유형”식별하는 데 사용됩니다
> x <- 1:3
> class(x)
[1] "integer"
“정수”방법이있는 일반 함수가 사용됩니다.
typeof()
R의 관점에서 대상의 “유형”을 mode()
제공하는 반면 Becker, Chambers & Wilks (1988)의 관점에서 대상의 “유형” 을 제공합니다. 후자는 R 언어 정의 매뉴얼 에 따라 다른 S 구현과 더 호환 될 수 있습니다 .
typeof()
R 객체를 컴파일 된 코드에 전달하는 것이 아니라면 대부분의 경우 사용 측면에서 실수를 범했을 것입니다 storage.mode()
.
이것은 위의 링크 된 R 언어 정의에서 유용하게 설명됩니다.
답변
보낸 사람 : https://www.mail-archive.com/r-help@r-project.org/msg17169.html :
‘모드’는 기본 구조에 따라 상호 배타적 인 객체 분류입니다. ‘원자’모드는 숫자, 복잡한, 문자 및 논리입니다. 재귀 객체에는 ‘list’또는 ‘function’또는 다른 몇 가지 모드가 있습니다. 객체에는 하나의 모드 만 있습니다.
‘class’는 일반 함수와 함께 작동하는 방식을 결정하는 객체에 할당 된 속성입니다. 상호 배타적 인 분류가 아닙니다. 객체에 간단한 숫자 형 벡터와 같은 특정 클래스가 할당되어 있지 않은 경우 일반적으로 클래스는 일반적으로 해당 모드와 동일합니다.
객체의 모드를 바꾸는 것을 종종 ‘강압 (coercion)’이라고합니다. 클래스를 변경하지 않고도 객체의 모드를 변경할 수 있습니다.
답변
classof와 typeof의 주요 차이점은 첫 번째는 사용자가 정의 할 수 있지만 유형은 정의 할 수 없다는 것입니다. 예를 들어 목록을 정의하십시오.
> x<-list("a",c(1,2))
> # x is a list
> class(x)
[1] "list"
> # class can be user defined
> class(x)<-"newclass"
> class(x)
[1] "newclass"
> typeof(x)
[1] "list"
# you cannot assign a different type using typeof()
> typeof(x)<-"newclass"
Error in typeof(x) <- "newclass" : could not find function "typeof<-"
사용자 정의 객체에 특정 클래스 이름을 부여하면 프로그램을 작성하는 데 매우 유용합니다. 객체 지향 프로그래밍 언어에서 발생하는 것과 유사한 방식으로 사용자 정의 객체에 태그를 지정할 수 있습니다.