CommencerCommencer gratuitement

Créer une méthode S3 (2)

Si aucune méthode adaptée n’est trouvée pour un générique, une erreur est levée. Par exemple, pour le moment, get_n_elements() ne dispose que d’une méthode pour les data.frame. Si vous passez une matrice à get_n_elements() à la place, vous verrez une erreur.

> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"

Plutôt que d’écrire des dizaines de méthodes pour chaque type d’entrée, vous pouvez créer une méthode qui gère tous les types qui n’ont pas de méthode spécifique. C’est la méthode par défaut ; elle porte toujours le nom generic.default. Par exemple, print.default() (docs) affichera tout type d’objet qui n’a pas sa propre méthode print() (docs).

Cet exercice fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Afficher le cours

Instructions

La fonction générique get_n_elements() et une méthode pour les data.frame ont été définies dans votre espace de travail.

  • Utilisez ls.str() (docs) pour explorer votre espace de travail.
  • Écrivez une méthode S3 par défaut pour get_n_elements().
    • Le nom de la fonction doit être le nom du générique, suivi d’un . puis de default.
    • Les arguments d’entrée doivent être x et ....
    • Le corps de la fonction doit tenir en une seule ligne et renvoyer le nombre d’éléments dans un objet quelconque. Utilisez la même technique que pour la partie d’échecs dans l’exercice Make it Classy (1).
  • Appelez votre méthode sur le jeu de données ability.cov (docs) et affectez le résultat à la variable n_elements_ability.cov.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Modifier et exécuter le code