R Language
Objektorienterad programmering i R
Sök…
Introduktion
Denna dokumentationssida beskriver de fyra objektsystemen i R och deras likheter och skillnader på hög nivå. Mer detaljerad information om varje enskilt system finns på sin egen ämnesida.
De fyra systemen är: S3, S4, referensklasser och S6.
S3
S3-objektsystemet är ett mycket enkelt OO-system i R.
Varje objekt har en S3-klass. Det kan få (fick?) Med funktionen class
.
> class(3)
[1] "numeric"
Det kan också ställas in med funktionen class
:
> bicycle <- 2
> class(bicycle) <- 'vehicle'
> class(bicycle)
[1] "vehicle"
Det kan också ställas in med funktionen attr
:
> velocipede <- 2
> attr(velocipede, 'class') <- 'vehicle'
> class(velocipede)
[1] "vehicle"
Ett objekt kan ha många klasser:
> class(x = bicycle) <- c('human-powered vehicle', class(x = bicycle))
> class(x = bicycle)
[1] "human-powered vehicle" "vehicle"
När man använder en generisk funktion använder R det första elementet i klassen som har en tillgänglig generisk.
Till exempel:
> summary.vehicle <- function(object, ...) {
+ message('this is a vehicle')
+ }
> summary(object = my_bike)
this is a vehicle
Men om vi nu definierar en summary.bicycle
:
> summary.bicycle <- function(object, ...) {
+ message('this is a bicycle')
+ }
> summary(object = my_bike)
this is a bicycle
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow