2011-01-17 4 views
64

Кто-нибудь знает, что такое слот в R?R: какие слоты?

Я не нашел объяснения его значения. Я получаю рекурсивное определение: «возвращает слот функции или набор информации об отдельных пазах объектов»

помощь была бы оценена, Благодарности - Alley

+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 

Здесь, цена, numberDoors, typeEngine и пробег слоты класса S4 "Car". Это тривиальный пример, в действительности сами слоты могут быть снова сложными объектами.

Слоты можно получить различными способами:

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

или через строительство конкретного метода (см дополнительную документацию).

Подробнее о программировании на S4 см. this question. Если концепция по-прежнему кажется вам неясной, может помочь общее введение в объектно-ориентированное программирование.

PS: Обратите внимание на разницу с данными и списками, в которых вы используете $ для доступа к именованным переменным/элементам.

+2

+1 хороший ответ Йорис. Возможно, вы захотите добавить пример «slot (aCar,« price »)' просто как другое использование, esp, поскольку op смотрел на функцию 'slot()' –

+0

Хорошая идея, Gavin, будет делать. –

+0

Спасибо, ваш ответ был очень полезен !! – user573347

10

В дополнение к ресурсам @Joris точек вы до плюс его собственный ответ, попытайтесь читать ?Classes, который включает в себя следующие на игровых автоматах:

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. 
     .... 
15

Так как names(variable) списки всех $ -достижима имена сложная переменная, поэтому

slotNames(object) перечислены все слоты объекта.

Очень удобно обнаруживать, какие предметы, которые подходит для вашего объекта, подходят для вашего удовольствия.

 Смежные вопросы

  • Нет связанных вопросов^_^