Вы определяете классы S4 с помощью setClass
, и внутри этого вы используете representation
для объявления членов и их типов.
В этом случае класс A
должен содержать только член типа list
для размещения коллекции объектов класса S4 B
.
setClass("A", representation(List = "list"))
setClass("B", representation(value = "numeric"))
Вы объявляете новый S4 объекты с функцией new
, в которой вы сначала указываете имя класса и их члены в качестве именованных параметров:
my_object <- new("A", List = list(new("B", value = 1), new("B", value = 2)))
my_object
#> An object of class "A"
#> Slot "List":
#> [[1]]
#> An object of class "B"
#> Slot "value":
#> [1] 1
#>
#>
#> [[2]]
#> An object of class "B"
#> Slot "value":
#> [1] 2
Мы можем получить член List
, используя оператор @
:
my_object@List
#> [[1]]
#> An object of class "B"
#> Slot "value":
#> [1] 1
#>
#>
#> [[2]]
#> An object of class "B"
#> Slot "value":
#> [1] 2
Из которого мы можем получить доступ к членам списка и их слотам S4 напрямую:
my_object@List[[1]]
#> An object of class "B"
#> Slot "value":
#> [1] 1
my_object@List[[1]]@value
#> [1] 1
Создано в 2020-03-16 пакетом prex (v0.3.0)