Aan de slagGa gratis aan de slag

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 als builtin-functies, die een speciaal evaluatiemechanisme gebruiken om sneller te zijn.
  • Taalconstructies, zoals if (docs) en while (docs), zijn ook functies! Deze heten special-functies.

Deze oefening maakt deel uit van de cursus

Objectgeoriënteerd programmeren met S3 en R6 in R

Cursus bekijken

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 lapply om over de elementen van some_vars te loopen en roep type_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
___
Code bewerken en uitvoeren