Welcher Typ bin ich?
Du hast gerade vier Funktionen kennengelernt, mit denen du den Typ einer Variablen bestimmen kannst, mit der du arbeitest. class() (docs) und typeof() (docs) sind wichtig und wirst du oft brauchen. mode() (docs) und storage.mode() (docs) existieren hauptsächlich zur Kompatibilität mit der Programmiersprache S.
In dieser Übung schaust du dir an, was diese Funktionen für verschiedene Variablentypen zurückgeben. Es gibt einige seltenere Typen, denen du vielleicht noch nicht begegnet bist.
array(docs): Verallgemeinerung einer Matrix mit einer beliebigen Anzahl an Dimensionen.formula(docs): Wird von Modellierungs- und Plotfunktionen verwendet, um Beziehungen zwischen Variablen zu definieren.
Beachte außerdem, dass es in R drei Arten von Funktionen gibt.
- Die meisten Funktionen, denen du begegnest, sind sogenannte
closures. - Einige wichtige Funktionen, wie
length()(docs), sind sogenanntebuiltin-Funktionen, die einen speziellen Auswertungsmechanismus verwenden, um schneller zu sein. - Sprachkonstrukte wie
if(docs) undwhile(docs) sind ebenfalls Funktionen! Sie werden alsspecial-Funktionen bezeichnet.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung mit S3 und R6 in R
Anleitung zur Übung
Die Funktion type_info() wurde in deinem Workspace vordefiniert und gibt für ihre Eingabe class(), mode(), typeof() und storage.mode() zurück. (Gib type_info in der Konsole ein, um zu sehen, wie sie funktioniert.)
- Erstelle
some_vars, die im Editor bereitgestellte Liste mit Beispielobjekten. - Verwende
lapply, um über die Elemente vonsome_varszu iterieren, und rufe für jedes Beispielobjekttype_info()auf, um dessen Typ zu erkunden.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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
___