とてもクラス的
変数には複数のクラスを持たせることができます。その場合、class()(docs)は長さ1より大きい文字ベクトルを返します。
同様に、class() に文字ベクトルを代入することで、複数のクラスを設定できます。クラスは左から右へ、より具体的なものからより一般的なものの順に並べてください。オブジェクトに最も適した振る舞いから始めたいからです。例えば、次のようにします。
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
汎用関数の inherits()(docs)を使うと、他のクラスを確認できます。例えば:
inherits(x, "vowels")
この演習はコースの一部です
R における S3 と R6 を使ったオブジェクト指向プログラミング
演習の手順
変数 kitty はワークスペースにあらかじめ用意されています。
- 名前を入力して、
kittyの中身を表示します。 - 変数
kittyにクラス"cat"、"mammal"、"character"を割り当てます。 inherits()を使って、kittyがクラス"cat"、"mammal"、"character"を持つことを(その順に1つずつ)確認します。is.character()を使って、kittyが依然として文字ベクトルであることを確認します。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?
___