Подтвердить что ты не робот

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

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

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

Помощь будет оценена, Благодаря - Alley

4b9b3361

Ответ 1

Слоты связаны с объектами 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 "Автомобиль". Это тривиальный пример, в действительности сами слоты могут быть снова сложными объектами.

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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