Search code examples
ooprr-s4slotr-faq

R: what are Slots?


Does anyone know what a slot is in R?

I did not find the explanation of its meaning. I get a recursive definition: "Slot function returns or set information about the individual slots of an object"


Solution

  • Slots are linked to S4 objects. A slot can be seen as a part, element or a "property" of an object. Say you have a car object, then you can have the slots "price", "number of doors", "type of engine", "mileage".

    Internally, that is represented a list. An example :

    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
    

    Here, price, numberDoors, typeEngine and mileage are slots of the S4 class "Car". This is a trivial example, in reality slots themselves can be again complex objects.

    Slots can be accessed in numerous ways :

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

    or through the construction of a specific method (see extra documentation).

    For more on S4 programming see this question. If the concept still sounds vague to you, a general introduction in Object Oriented Programming could help.

    PS: Mind the difference with dataframes and lists, where you use $ to access named variables/elements.