CommencezCommencez gratuitement

Créer une méthode S3 (2)

Si aucune méthode appropriée n'est trouvée pour un générique, une erreur est levée. Par exemple, pour l'instant, get_n_elements() n'a qu'une méthode pour les data.frame. Si vous passez plutôt une matrice à get_n_elements(), 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 précise. 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).

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 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 devrait être le nom du générique, suivi d'un . puis de default.
    • Les arguments d'entrée devraient être x et ....
    • Le corps de la fonction devrait tenir sur une seule ligne et retourner le nombre d'éléments d'un objet arbitraire. Employez la même technique que pour la partie d'échecs dans l'exercice Make it Classy (1).
  • Appelez votre méthode sur l'ensemble de données ability.cov (docs) et assignez le résultat à la variable n_elements_ability.cov.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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