R 객체의 모드, 클래스 및 유형


39

Mode, Class 및 Type of R 객체의 차이점이 무엇인지 궁금합니다. R 객체의 유형은 typeof () 함수, mode by mode () 및 class by class ()로 얻을 수 있습니다.

또한 내가 놓친 다른 유사한 기능과 개념은 무엇입니까?

감사합니다.


2
str (variable)은 가장 친한 친구입니다.
Brandon Bertelsen

2
스택 오버플로에 대한 R : 변수 유형 및 클래스 질문을 참조하십시오 .
Leo

답변:


21

class()/ 정의 객체 R. 그래서 객체 지향 프로그래밍의 관점에에서 무엇 "유형"식별하는 데 사용됩니다

> x <- 1:3
> class(x)
[1] "integer"

"정수"방법이있는 일반 함수가 사용됩니다.

typeof()R의 관점에서 대상의 "유형"을 mode()제공하는 반면 Becker, Chambers & Wilks (1988)의 관점에서 대상의 "유형" 을 제공합니다. 후자는 R 언어 정의 매뉴얼 에 따라 다른 S 구현과 더 호환 될 수 있습니다 .

typeof()R 객체를 컴파일 된 코드에 전달하는 것이 아니라면 대부분의 경우 사용 측면에서 실수를 범했을 것입니다 storage.mode().

이것은 위의 링크 된 R 언어 정의에서 유용하게 설명됩니다.


3
왜 그렇게 많은 관점이 있습니까? 혼란이 아닌 이점이 있습니다.
smwikipedia

1
R은 S-Plus와 S를 포함하는 유산을 가지고 있으며 후자의 언어는 시간이 지남에 따라 진화했기 때문에 @smwikipedia. 또한 사용자가 만들 수있는 객체와 기본 객체 유형을 구분해야합니다.
복원 Monica Monica-G. Simpson

@smwikipedia는 R이 바로 그 때문입니다. 우리는이 같은 이유 <-=변수 할당합니다.
Andre Terra

9

보낸 사람 : https://www.mail-archive.com/r-help@r-project.org/msg17169.html :

'모드'는 기본 구조에 따라 상호 배타적 인 객체 분류입니다. '원자'모드는 숫자, 복잡한, 문자 및 논리입니다. 재귀 객체에는 'list'또는 'function'또는 다른 몇 가지 모드가 있습니다. 객체에는 하나의 모드 만 있습니다.

'class'는 일반 함수와 함께 작동하는 방식을 결정하는 객체에 할당 된 속성입니다. 상호 배타적 인 분류가 아닙니다. 객체에 간단한 숫자 형 벡터와 같은 특정 클래스가 할당되어 있지 않은 경우 일반적으로 클래스는 일반적으로 해당 모드와 동일합니다.

객체의 모드를 바꾸는 것을 종종 '강압 (coercion)'이라고합니다. 클래스를 변경하지 않고도 객체의 모드를 변경할 수 있습니다.


1

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<-" 

사용자 정의 객체에 특정 클래스 이름을 부여하면 프로그램을 작성하는 데 매우 유용합니다. 객체 지향 프로그래밍 언어에서 발생하는 것과 유사한 방식으로 사용자 정의 객체에 태그를 지정할 수 있습니다.


및 의 R설명서에 따르면 "주요 차이점"에 대한 주장이 잘못되었습니다. "typeof는 모든 객체의 (R 내부) 유형 또는 저장 모드를 결정합니다."는 내부 저장 모드에 관계없이 할당 할 수있는 객체의 속성입니다. 하나는 논리적 특성을 설명 하고 다른 하나는 객체 의 물리적 특성을 설명합니다. typeofclassclass
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.