Inizia subitoInizia gratis

Creare un metodo S3 (2)

Se per una generica non viene trovata una modalità adatta, viene generato un errore. Per esempio, al momento get_n_elements() ha una modalità disponibile solo per i data.frame. Se invece passi una matrice a get_n_elements(), vedrai un errore.

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

Invece di dover scrivere decine di modalità per ogni tipo di input, puoi creare una modalità che gestisca tutti i tipi che non hanno una modalità specifica. Questa si chiama modalità default; ha sempre il nome generic.default. Per esempio, print.default() (docs) stamperà qualsiasi tipo di oggetto che non ha un proprio metodo print() (docs).

Questo esercizio fa parte del corso

Programmazione orientata agli oggetti con S3 e R6 in R

Visualizza corso

Istruzioni dell'esercizio

La funzione generica get_n_elements() e una modalità per i data.frame sono già state definite nel tuo workspace.

  • Usa ls.str() (docs) per esplorare il tuo workspace.
  • Scrivi una modalità S3 di default per get_n_elements().
    • Il nome della funzione deve essere il nome della generica, poi un . e quindi default.
    • Gli argomenti di input devono essere x e ....
    • Il corpo della funzione deve essere su una sola riga e restituire il numero di elementi in un oggetto qualsiasi. Usa la stessa tecnica del gioco degli scacchi nell’esercizio Make it Classy (1).
  • Chiama la tua modalità sul dataset ability.cov (docs) e assegna il risultato alla variabile n_elements_ability.cov.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Modifica ed esegui il codice