Quel est mon type?
Vous venez de voir quatre fonctions qui aident à déterminer le type de variable avec lequel vous travaillez. class() (docs) et typeof() (docs) sont importantes et vous seront très utiles. mode() (docs) et storage.mode() (docs) existent surtout pour assurer la compatibilité avec le langage de programmation S.
Dans cet exercice, vous examinerez ce que ces fonctions retournent pour différents types de variables. Il existe aussi des types plus rares que vous n'avez peut-être pas encore vus.
array(docs) : généralisation d'une matrice avec un nombre arbitraire de dimensions.formula(docs) : utilisée par les fonctions de modélisation et de tracé pour définir les relations entre des variables.
Notez aussi qu'il existe trois types de fonctions en R.
- La plupart des fonctions que vous rencontrez sont des
closures. - Quelques fonctions importantes, comme
length()(docs), sont appelées fonctionsbuiltinet utilisent un mécanisme d'évaluation spécial pour être plus rapides. - Les constructions du langage, comme
if(docs) etwhile(docs), sont aussi des fonctions! On les appelle des fonctionsspecial.
Cette activité fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions de l’exercice
La fonction type_info() a été prédéfinie dans votre espace de travail pour retourner les résultats de class(), mode(), typeof() et storage.mode() pour son entrée. (Tapez type_info dans la console pour voir comment elle fonctionne.)
- Créez
some_vars, la liste d'objets d'exemple fournie dans l'éditeur. - Utilisez
lapplypour parcourir les éléments desome_varset appeleztype_info()sur chacun des objets afin d'explorer leur type.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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
___