Wat is mijn type?
Je hebt zojuist vier functies gezien die je helpen bepalen met wat voor type variabele je werkt. class() (docs) en typeof() (docs) zijn belangrijk en zul je vaak gebruiken. mode() (docs) en storage.mode() (docs) bestaan vooral voor compatibiliteit met de S-programmeertaal.
In deze oefening bekijk je wat deze functies teruggeven voor verschillende variabeletypen. Er zijn een paar zeldzamere typen die je misschien nog niet bent tegengekomen.
array(docs): Generalisatie van een matrix met een willekeurig aantal dimensies.formula(docs): Gebruikt door modelleer- en plotfuncties om relaties tussen variabelen te definiëren.
Let ook op dat er drie soorten functies in R zijn.
- Het merendeel van de functies die je tegenkomt heten
closures. - Een paar belangrijke functies, zoals
length()(docs), staan bekend alsbuiltin-functies, die een speciaal evaluatiemechanisme gebruiken om sneller te zijn. - Taalconstructies, zoals
if(docs) enwhile(docs), zijn ook functies! Deze hetenspecial-functies.
Deze oefening maakt deel uit van de cursus
Objectgeoriënteerd programmeren met S3 en R6 in R
Oefeninstructies
De functie type_info() is vooraf gedefinieerd in je werkruimte en geeft de class(), mode(), typeof() en storage.mode() van de input terug. (Typ type_info in de console om te zien hoe het werkt.)
- Maak
some_vars, de lijst met voorbeeldobjecten die in de editor staat. - Gebruik
lapplyom over de elementen vansome_varste loopen en roeptype_info()aan op elk van de voorbeeldobjecten om hun type te verkennen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Look at the definition of type_info()
type_info
# Create list of example variables
some_vars <- list(
an_integer_vector = rpois(24, lambda = 5),
a_numeric_vector = rbeta(24, shape1 = 1, shape2 = 1),
an_integer_array = array(rbinom(24, size = 8, prob = 0.5), dim = c(2, 3, 4)),
a_numeric_array = array(rweibull(24, shape = 1, scale = 1), dim = c(2, 3, 4)),
a_data_frame = data.frame(int = rgeom(24, prob = 0.5), num = runif(24)),
a_factor = factor(month.abb),
a_formula = y ~ x,
a_closure_function = mean,
a_builtin_function = length,
a_special_function = `if`
)
# Loop over some_vars calling type_info() on each element to explore them
___