始める無料で始める

とてもクラス的

変数には複数のクラスを持たせることができます。その場合、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?
___
コードを編集して実行