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 funzionibuiltin, che usano un meccanismo di valutazione speciale per essere più rapide. - Le strutture del linguaggio, come
if(docs) ewhile(docs), sono anch’esse funzioni! Sono note come funzionispecial.
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
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
lapplyper iterare sugli elementi disome_vars, chiamandotype_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
___