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

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

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

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


person user573347    schedule 17.01.2011    source источник
comment
Это из справки по функции slot() - она ​​не предназначена для документирования того, что такое слот, а только для того, как получить к ним доступ.   -  person Gavin Simpson    schedule 17.01.2011


Ответы (4)


Слоты связаны с объектами 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: обратите внимание на разницу с фреймами данных и списками, где вы используете $ для доступа к именованным переменным/элементам.

person Joris Meys    schedule 17.01.2011
comment
+1 хороший ответ Йорис. Возможно, вы захотите добавить пример slot(aCar, "price") просто как другое использование, особенно когда оператор смотрел на функцию slot() - person Gavin Simpson; 17.01.2011
comment
Спасибо, ваш ответ очень помог!! - person user573347; 17.01.2011
comment
А чтобы получить все слоты класса, в их названиях есть getSlots() или slotNames(). - person Laurent; 19.01.2011

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

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

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

person tim    schedule 21.09.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.
      ....
person Gavin Simpson    schedule 17.01.2011

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

person Max    schedule 19.12.2018
comment
Это законный комментарий. Давайте признаем, что R полон причудливых вариантов дизайна. - person King Crimson; 10.12.2019
comment
Я могу понять странную терминологию для функций, которые датируются 70-ми годами, но слоты не входят в их число, они были добавлены на самом деле, когда большинство ОО-языков отставали на десятки лет. - person Max; 11.12.2019