LoslegenKostenlos loslegen

Eine S3-Methode erstellen (2)

Wenn für eine generische Funktion keine passende Methode gefunden wird, wird ein Fehler ausgelöst. Zum Beispiel hat get_n_elements() im Moment nur eine Methode für data.frames. Übergibst du stattdessen eine Matrix an get_n_elements(), siehst du einen Fehler.

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

Anstatt Dutzende Methoden für jeden möglichen Eingabetyp zu schreiben, kannst du eine Methode erstellen, die alle Typen behandelt, für die es keine spezifische Methode gibt. Das ist die sogenannte default-Methode; sie heißt immer generic.default. Zum Beispiel gibt print.default() (docs) jeden Objekttyp aus, der keine eigene print() (docs) Methode hat.

Diese Übung ist Teil des Kurses

Objektorientierte Programmierung mit S3 und R6 in R

Kurs anzeigen

Anleitung zur Übung

Die generische Funktion get_n_elements() und eine Methode für data.frames sind in deinem Workspace definiert.

  • Verwende ls.str() (docs), um deinen Workspace zu erkunden.
  • Schreibe eine S3-default-Methode für get_n_elements().
    • Der Name der Funktion sollte aus dem Namen der generischen Funktion bestehen, dann einem . und dann default.
    • Die Eingabeargumente sollten x und ... sein.
    • Der Rumpf der Funktion soll aus einer einzigen Zeile bestehen, die die Anzahl der Elemente in einem beliebigen Objekt zurückgibt. Nutze dieselbe Technik wie beim Schachspiel in der Übung Make it Classy (1).
  • Rufe deine Methode auf dem Datensatz ability.cov (docs) auf und weise das Ergebnis der Variablen n_elements_ability.cov zu.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Code bearbeiten und ausführen