Kom igångKom igång gratis

Skapa en S3-metod (2)

Om ingen lämplig metod hittas för en generisk funktion kastas ett fel. För tillfället har till exempel get_n_elements() bara en metod tillgänglig för data.frames. Om du skickar en matris till get_n_elements() i stället visas ett fel.

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

I stället för att skriva dussintals metoder för varje typ av indata kan du skapa en metod som hanterar alla typer som saknar en specifik metod. Den kallas för standardmetoden och har alltid namnet generic.default. Till exempel skriver print.default() (docs) ut vilket objekt som helst som saknar en egen print()-metod (docs).

Den här övningen är en del av kursen

Objektorienterad programmering med S3 och R6 i R

Visa kurs

Övningsinstruktioner

Den generiska funktionen get_n_elements() och en metod för data.frames har redan definierats i din arbetsyta.

  • Använd ls.str() (docs) för att utforska din arbetsyta.
  • Skriv en S3-standardmetod för get_n_elements().
    • Funktionens namn ska vara den generiska funktionens namn, följt av . och sedan default.
    • Indataargumenten ska vara x och ....
    • Funktionskroppen ska bestå av en enda rad som returnerar antalet element i ett godtyckligt objekt. Använd samma teknik som i schackexemplet i övningen Make it Classy (1).
  • Anropa din metod på datamängden ability.cov (docs) och tilldela resultatet till variabeln n_elements_ability.cov.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Redigera och kör kod