Zacznij terazZacznij za darmo

Tworzenie metody S3 (2)

Jeśli dla danej funkcji generycznej nie zostanie znaleziona odpowiednia metoda, zgłaszany jest błąd. Na przykład w tej chwili get_n_elements() ma zdefiniowaną metodę tylko dla obiektów data.frame. Jeśli zamiast tego przekażesz do get_n_elements() macierz, zobaczysz błąd.

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

Zamiast pisać dziesiątki metod dla każdego możliwego typu danych wejściowych, możesz zdefiniować metodę obsługującą wszystkie typy, które nie mają własnej dedykowanej metody. Nazywa się ją metodą domyślną (ang. default) i zawsze nosi nazwę generic.default. Na przykład print.default() (dokumentacja) wypisze dowolny typ obiektu, który nie ma własnej metody print() (dokumentacja).

To ćwiczenie jest częścią kursu

Programowanie obiektowe z S3 i R6 w R

Zobacz kurs

Instrukcje do ćwiczenia

W twoim środowisku roboczym zostały już zdefiniowane funkcja generyczna get_n_elements() oraz metoda dla obiektów data.frame.

  • Użyj ls.str() (dokumentacja), aby zbadać swoje środowisko robocze.
  • Napisz domyślną metodę S3 dla get_n_elements().
    • Nazwa funkcji powinna składać się z nazwy funkcji generycznej, kropki i słowa default.
    • Argumenty wejściowe powinny to być x i ....
    • Ciało funkcji powinno zawierać jedną linię, zwracającą liczbę elementów dowolnego obiektu. Zastosuj tę samą technikę, co w przypadku gry szachowej w ćwiczeniu Make it Classy (1).
  • Wywołaj swoją metodę na zbiorze danych ability.cov (dokumentacja) i przypisz wynik do zmiennej n_elements_ability.cov.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Edytuj i uruchom kod