Inizia subitoInizia gratis

Che tipo sono?

Hai appena visto quattro funzioni che ti aiutano a capire con che tipo di variabile stai lavorando. class() (docs) e typeof() (docs) sono importanti e ti torneranno utili spesso. mode() (docs) e storage.mode() (docs) esistono principalmente per compatibilità con il linguaggio S.

In questo esercizio, vedrai cosa restituiscono queste funzioni per diversi tipi di variabili. Ci sono alcuni tipi più rari che forse non hai ancora incontrato.

  • array (docs): generalizzazione di una matrice con un numero arbitrario di dimensioni.
  • formula (docs): usata da funzioni di modellizzazione e grafici per definire le relazioni tra variabili.

Nota anche che in R esistono tre tipi di funzioni.

  • La maggior parte delle funzioni che incontri sono closure.
  • Alcune funzioni importanti, come length() (docs), sono dette funzioni builtin, che usano un meccanismo di valutazione speciale per essere più rapide.
  • Le strutture del linguaggio, come if (docs) e while (docs), sono anch’esse funzioni! Sono note come funzioni special.

Questo esercizio fa parte del corso

Programmazione orientata agli oggetti con S3 e R6 in R

Visualizza corso

Istruzioni dell'esercizio

La funzione type_info() è stata predefinita nel tuo workspace per restituire class(), mode(), typeof() e storage.mode() del suo input. (Digita type_info nella console per vedere come funziona.)

  • Crea some_vars, la lista di oggetti di esempio fornita nell’editor.
  • Usa lapply per iterare sugli elementi di some_vars, chiamando type_info() su ciascun oggetto di esempio per esplorarne il tipo.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
___
Modifica ed esegui il codice