CommencezCommencez gratuitement

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 fonctions builtin et utilisent un mécanisme d'évaluation spécial pour être plus rapides.
  • Les constructions du langage, comme if (docs) et while (docs), sont aussi des fonctions! On les appelle des fonctions special.

Cette activité fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Voir le cours

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 lapply pour parcourir les éléments de some_vars et appelez type_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
___
Modifier et exécuter le code