R Language
Objectgeoriënteerd programmeren in R
Zoeken…
Invoering
Deze documentatiepagina beschrijft de vier objectsystemen in R en hun overeenkomsten en verschillen op hoog niveau. Meer details over elk afzonderlijk systeem zijn te vinden op de eigen onderwerppagina.
De vier systemen zijn: S3, S4, Reference Classes en S6.
S3
Het S3-objectsysteem is een heel eenvoudig OO-systeem in R.
Elk object heeft een S3-klasse. Het kan krijgen (heb?) Met de functie class
.
> class(3)
[1] "numeric"
Het kan ook worden ingesteld met de functie class
:
> bicycle <- 2
> class(bicycle) <- 'vehicle'
> class(bicycle)
[1] "vehicle"
Het kan ook worden ingesteld met de functie attr
:
> velocipede <- 2
> attr(velocipede, 'class') <- 'vehicle'
> class(velocipede)
[1] "vehicle"
Een object kan veel klassen hebben:
> class(x = bicycle) <- c('human-powered vehicle', class(x = bicycle))
> class(x = bicycle)
[1] "human-powered vehicle" "vehicle"
Wanneer een generieke functie wordt gebruikt, gebruikt R het eerste element van de klasse dat een beschikbare generieke heeft.
Bijvoorbeeld:
> summary.vehicle <- function(object, ...) {
+ message('this is a vehicle')
+ }
> summary(object = my_bike)
this is a vehicle
Maar als we nu een summary.bicycle
definiëren. summary.bicycle
:
> summary.bicycle <- function(object, ...) {
+ message('this is a bicycle')
+ }
> summary(object = my_bike)
this is a bicycle