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


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

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

помощь будет оценили, Спасибо - Аллея

3 66

3 ответа:

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

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

slotNames(object) список всех слотов объекта.

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

в дополнение к ресурсам @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.
      ....