2011-01-17 2 views
64

슬롯에 R이 무엇인지 아는 사람이 있습니까?R : 슬롯이란 무엇입니까?

그 의미에 대한 설명을 찾지 못했습니다. 나는 재귀 정의를 얻을 : "슬롯 함수가 반환 또는 개체의 개별 슬롯에 대한 설정 정보"

도움을 주시면 감사하겠습니다, 감사합니다 -

+0

'slot()'함수의 도움말에서 온 것입니다. 슬롯이란 무엇인지, 그 슬롯에 액세스하는 방법 만 설명하는 것이 아닙니다. –

답변

66

슬롯이 S4 개체에 연결되어 골목. 슬롯은 객체의 일부, 요소 또는 "속성"으로 볼 수 있습니다. 차 객체를 가지고 있다고 가정하면, "가격", "문 개수", "엔진 유형", "마일리지"슬롯을 가질 수 있습니다.

내부적으로 이는 목록을 나타냅니다. 예 :

setClass("Car",representation=representation(
    price = "numeric", 
    numberDoors="numeric", 
    typeEngine="character", 
    mileage="numeric" 
)) 
aCar <- new("Car",price=20000,numberDoors=4,typeEngine="V6",mileage=143) 

> aCar 
An object of class "Car" 
Slot "price": 
[1] 20000 

Slot "numberDoors": 
[1] 4 

Slot "typeEngine": 
[1] "V6" 

Slot "mileage": 
[1] 143 

여기에서 price, numberDoors, typeEngine 및 mileage는 S4 클래스 "Car"의 슬롯입니다. 이것은 사소한 예입니다. 실제로는 슬롯 자체가 다시 복잡한 객체가 될 수 있습니다.

슬롯은 다양한 방법으로 액세스 할 수 있습니다

> [email protected] 
[1] 20000 
> slot(aCar,"typeEngine") 
[1] "V6"  

또는 특정 방법의 건설을 통해

(추가 설명서를 참조하십시오).

S4 프로그래밍에 대한 자세한 내용은 this question을 참조하십시오. 개념이 여전히 모호하게 들린다면 객체 지향 프로그래밍에 대한 일반적인 소개가 도움이 될 수 있습니다.

추 신 : $을 사용하여 명명 된 변수/요소에 액세스하는 데이터 프레임과 목록과의 차이점을 염두에 두십시오. 모든 $ -accessible 이름을

Slots: 

     The data contained in an object from an S4 class is defined 
     by the _slots_ in the class definition. 

     Each slot in an object is a component of the object; like 
     components (that is, elements) of a list, these may be 
     extracted and set, using the function ‘slot()’ or more often 
     the operator ‘"@"’. However, they differ from list 
     components in important ways. First, slots can only be 
     referred to by name, not by position, and there is no partial 
     matching of names as with list elements. 
     .... 
+2

+1 좋은 답변 Joris. op()가'slot()'함수를보고있을 때'slot (aCar, "price")'예제를 또 다른 사용법처럼 추가하고 싶을 수도있다. –

+0

좋은 생각, Gavin이 할 것이다. –

+0

감사합니다. 귀하의 답변은 매우 유용했습니다 !! – user573347

10

는 슬롯에 다음이 포함 ?Classes을 읽어보세요 복잡한 변수이기도합니다.

slotNames(object)은 객체의 모든 슬롯을 나열합니다.

착용감이 좋고 착용감이 좋은 물건을 발견하면 매우 편리합니다.

15

그냥 names(variable)로 목록까지 : 당신의 자원 @Joris 포인트 플러스 자신의 대답에 추가