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
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ć
xi.... - 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).
- Nazwa funkcji powinna składać się z nazwy funkcji generycznej, kropki i słowa
- Wywołaj swoją metodę na zbiorze danych
ability.cov(dokumentacja) i przypisz wynik do zmiennejn_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 <- ___