R: wat zijn slots?

Weet iemand wat een slot is in R?

Ik heb de uitleg van de betekenis niet gevonden. Ik krijg een recursieve definitie:
“Slot-functie retourneert of stelt informatie in over de individuele slots van een object”

Hulp wordt op prijs gesteld,
Bedankt –
Steegje


Antwoord 1, autoriteit 100%

Slots zijn gekoppeld aan S4-objecten. Een slot kan worden gezien als een onderdeel, element of een “eigendom” van een object. Stel dat u een auto-object heeft, dan kunt u de vakjes “prijs”, “aantal deuren”, “type motor”, “kilometerstand” hebben.

Intern is dat een lijst. Een voorbeeld:

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

Hier, prijs, aantalDeuren, typeMotor en kilometerstand zijn slots van de S4-klasse “Auto”. Dit is een triviaal voorbeeld, in werkelijkheid kunnen slots zelf weer complexe objecten zijn.

Slots zijn op verschillende manieren toegankelijk:

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

of door de constructie van een specifieke methode (zie extra documentatie).

Voor meer informatie over S4-programmering, zie deze vraag. Als het concept je nog steeds vaag in de oren klinkt, kan een algemene introductie in objectgeoriënteerd programmeren helpen.

PS: Let op het verschil met dataframes en lijsten, waar je $gebruikt om toegang te krijgen tot benoemde variabelen/elementen.


Antwoord 2, autoriteit 24%

Net zoals names(variable)alle $-toegankelijke namen van een complexe variabele opsomt, zo ook

slotNames(object)geeft alle slots van een object weer.

Heel handig om te ontdekken welke goodies je fit-object bevat voor je kijkplezier.


Antwoord 3, autoriteit 14%

Probeer naast de bronnen waar @Joris je naar verwijst, plus zijn eigen antwoord, ?Classeste lezen, waaronder het volgende over slots:

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

Antwoord 4, autoriteit 4%

Geen idee waarom R alles opnieuw moet definiëren. De meeste normale programmeertalen noemen ze “eigenschappen” of “attributen”.

Other episodes