Створення методу S3 (2)
Якщо для дженерика не знаходиться відповідного методу, виникає помилка. Наприклад, зараз get_n_elements() має метод лише для data.frame. Якщо передати до get_n_elements() матрицю, ви отримаєте помилку.
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
Замість того щоб писати десятки методів для кожного типу вхідних даних, ви можете створити метод, який обробляє всі типи, для яких немає спеціального методу. Це так званий метод default; його назва завжди має формат generic.default. Наприклад, print.default() (docs) виведе будь-який тип об'єкта, який не має власного методу print() (docs).
Ця вправа є частиною курсу
Об'єктно-орієнтоване програмування з S3 та R6 в R
Інструкції до вправи
У вашому робочому середовищі вже визначено дженерик get_n_elements() і метод для data.frame.
- Скористайтеся
ls.str()(docs), щоб дослідити робоче середовище. - Напишіть стандартний (default) метод S3 для
get_n_elements().- Назва функції має складатися з назви дженерика, далі
.іdefault. - Вхідні аргументи мають бути
xі.... - Тіло функції має бути одним рядком і повертати кількість елементів у довільному об'єкті. Використайте той самий підхід, що й у вправі Make it Classy (1) для шахової партії.
- Назва функції має складатися з назви дженерика, далі
- Викличте ваш метод на наборі даних
ability.cov(docs) і запишіть результат у зміннуn_elements_ability.cov.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___