1. Uczyć się
  2. /
  3. Courses
  4. /
  5. Programowanie obiektowe z S3 i R6 w R

Connected

Exercise

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).

Instrukcje

100 XP

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.