Klasa wyższa
Zmienne mogą mieć więcej niż jedną klasę. W takim przypadku funkcja class() (docs) zwraca wektor znakowy o długości większej niż jeden.
Wielu klas możesz też przypisać jednocześnie, przekazując do class() wektor znakowy. Klasy należy uporządkować od bardziej szczegółowych do bardziej ogólnych – od lewej do prawej – ponieważ chcesz zaczynać od zachowania najbardziej dopasowanego do danego obiektu. Na przykład:
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
Do sprawdzenia pozostałych klas służy ogólna funkcja inherits() (docs). Na przykład:
inherits(x, "vowels")
To ćwiczenie jest częścią kursu
Programowanie obiektowe z S3 i R6 w R
Instrukcje do ćwiczenia
Zmienna kitty jest już zdefiniowana w twoim środowisku.
- Wyświetl wartość
kitty, wpisując jej nazwę. - Przypisz zmiennej
kittyklasy"cat","mammal"oraz"character". - Sprawdź, czy
kittyma klasę"cat","mammal"i"character"(po jednej na raz, w tej kolejności) za pomocąinherits(). - Sprawdź, czy
kittynadal jest wektorem znakowym, używającis.character(). - Sprawdź, że
kittynie ma klasy"dog".
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# View the kitty
kitty
# Assign classes
___ <- ___
# Does kitty inherit from cat/mammal/character?
inherits(___, "___")
___
___
# Is kitty a character vector?
___
# Does kitty inherit from dog?
___