Дуже класно
Змінні можуть мати більше ніж один клас. У такому разі class() (документація) повертає символьний вектор довжини більшої за одиницю.
Так само можна задати кілька класів, присвоївши символьний вектор функції class(). Класи слід упорядковувати від більш конкретних до загальніших зліва направо, адже ви хочете починати з поведінки, найточніше налаштованої під ваш об'єкт. Наприклад:
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
Ви можете перевіряти наявність інших класів за допомогою універсальної функції inherits() (документація). Наприклад:
inherits(x, "vowels")
Ця вправа є частиною курсу
Об'єктно-орієнтоване програмування з S3 та R6 в R
Інструкції до вправи
Змінну kitty уже визначено у вашому робочому середовищі.
- Перегляньте
kitty, ввівши її ім'я. - Присвойте змінній
kittyкласи"cat","mammal"і"character". - Перевірте, що
kittyмає класи"cat", а також"mammal","character"(по одному, у такому порядку) за допомогоюinherits(). - Перевірте, що
kittyусе ще є символьним вектором за допомогоюis.character(). - Переконайтеся, що
kittyне має класу"dog".
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# View the kitty
kitty
# Assign classes
___ <- ___
# Does kitty inherit from cat/mammal/character?
inherits(___, "___")
___
___
# Is kitty a character vector?
___
# Does kitty inherit from dog?
___