R: что такое слоты? - PullRequest
       23

R: что такое слоты?

72 голосов
/ 17 января 2011

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

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

Помощь будет оценена, Спасибо - Alley

Ответы [ 4 ]

76 голосов
/ 17 января 2011

Слоты связаны с объектами 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

Здесь цена, количество дверей, тип двигателя и пробег являются слотами класса S4 «Автомобиль». Это тривиальный пример, в действительности сами слоты снова могут быть сложными объектами.

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

> aCar@price
[1] 20000
> slot(aCar,"typeEngine")
[1] "V6"    

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

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

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

16 голосов
/ 21 сентября 2011

Как names(variable) перечисляет все $ -доступные имена комплексной переменной, так и

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

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

10 голосов
/ 17 января 2011

В дополнение к ресурсам, на которые указывает @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.
      ....
0 голосов
/ 19 декабря 2018

Понятия не имею, почему R должен все переопределять. Большинство нормальных языков программирования называют их «свойствами» или «атрибутами».

...