ÎncepețiÎncepe gratuit

Crearea unei metode S3 (2)

Dacă nu se găsește nicio metodă potrivită pentru o funcție generică, se generează o eroare. De exemplu, în acest moment, get_n_elements() are o metodă disponibilă doar pentru data.frame-uri. Dacă transmiți o matrice funcției get_n_elements(), vei vedea o eroare.

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

În loc să scrii zeci de metode pentru fiecare tip de intrare în parte, poți crea o metodă care gestionează toate tipurile ce nu au o metodă specifică. Aceasta se numește metoda default și are întotdeauna numele generic.default. De exemplu, print.default() (docs) va afișa orice tip de obiect care nu are propria metodă print() (docs).

Acest exercițiu face parte din cursul

Programare orientată pe obiecte cu S3 și R6 în R

Vezi cursul

Instrucțiuni pentru exercițiu

Funcția generică get_n_elements() și o metodă pentru data.frame-uri au fost deja definite în workspace-ul tău.

  • Folosește ls.str() (docs) pentru a explora workspace-ul.
  • Scrie o metodă S3 default pentru get_n_elements().
    • Numele funcției ar trebui să fie numele genericului, urmat de ., apoi de default.
    • Argumentele de intrare ar trebui să fie x și ....
    • Corpul funcției ar trebui să conțină o singură linie, returnând numărul de elemente dintr-un obiect arbitrar. Folosește aceeași tehnică ca la jocul de șah din exercițiul Make it Classy (1).
  • Apelează metoda pe setul de date ability.cov (docs) și atribuie rezultatul variabilei n_elements_ability.cov.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Editează și rulează codul