LoslegenKostenlos loslegen

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 sogenannte builtin-Funktionen, die einen speziellen Auswertungsmechanismus verwenden, um schneller zu sein.
  • Sprachkonstrukte wie if (docs) und while (docs) sind ebenfalls Funktionen! Sie werden als special-Funktionen bezeichnet.

Diese Übung ist Teil des Kurses

Objektorientierte Programmierung mit S3 und R6 in R

Kurs anzeigen

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 von some_vars zu iterieren, und rufe für jedes Beispielobjekt type_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
___
Code bearbeiten und ausführen