Kom igångKom igång gratis

Vilken typ är det?

Du har precis sett fyra funktioner som hjälper dig att avgöra vilken typ en variabel har. class() (docs) och typeof() (docs) är viktiga och kommer att vara användbara ofta. mode() (docs) och storage.mode() (docs) finns framför allt för kompatibilitet med programmeringsspråket S.

I den här övningen undersöker du vad dessa funktioner returnerar för olika variabeltyper. Några av typerna nedan är ovanligare och kanske inte bekanta sedan tidigare.

  • array (docs): En generalisering av en matris med godtyckligt antal dimensioner.
  • formula (docs): Används av modellerings- och plotfunktioner för att definiera samband mellan variabler.

Observera också att det finns tre typer av funktioner i R.

  • De flesta funktioner du stöter på kallas closures.
  • Några viktiga funktioner, som length() (docs), kallas builtin-funktioner och använder en särskild evalueringsmekanism för att köras snabbare.
  • Språkkonstruktioner som if (docs) och while (docs) är också funktioner! De kallas special-funktioner.

Den här övningen är en del av kursen

Objektorienterad programmering med S3 och R6 i R

Visa kurs

Övningsinstruktioner

Funktionen type_info() är fördefinierad i din workspace och returnerar class(), mode(), typeof() och storage.mode() för sitt argument. (Skriv type_info i konsolen för att se hur den fungerar.)

  • Skapa some_vars, listan med exempelobjekt som finns i editorn.
  • Använd lapply för att iterera över elementen i some_vars och anropa type_info() på varje exempelobjekt för att utforska deras typ.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
___
Redigera och kör kod