始める無料で始める

型は何でしょう?

変数の種類を調べるのに役立つ4つの関数を見てきました。class()docs)とtypeof()docs)は重要で、よく使います。mode()docs)とstorage.mode()docs)は主にS言語との互換性のために存在します。

この演習では、さまざまな変数型に対してこれらの関数がどのような結果を返すかを確認します。あまり馴染みのない型も登場します。

  • arraydocs):任意の次元数をもつ行列の一般化です。
  • formuladocs):モデリング関数やプロット関数で、変数間の関係を表すために使われます。

また、Rには3種類の関数があることにも注意してください。

  • 皆さんがよく目にする関数のほとんどは closure と呼ばれます。
  • length()docs)のような一部の重要な関数は builtin 関数と呼ばれ、特別な評価メカニズムを使って高速に動作します。
  • ifdocs)やwhiledocs)のような言語構成子も関数です。これらは special 関数と呼ばれます。

この演習はコースの一部です

R における S3 と R6 を使ったオブジェクト指向プログラミング

コースを見る

演習の手順

ワークスペースには、入力に対する class()mode()typeof()storage.mode() を返す type_info() 関数があらかじめ定義されています。(コンソールで type_info と入力して、どのように動くか確認できます。)

  • エディタに用意されたサンプルオブジェクトを使って、some_vars というリストを作成してください。
  • lapply を使って some_vars の各要素をループし、各サンプルオブジェクトに対して type_info() を呼び出して型を調べましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Look at the definition of type_info()
type_info

# Create list of example variables
some_vars <- list(
  an_integer_vector = rpois(24, lambda = 5),
  a_numeric_vector = rbeta(24, shape1 = 1, shape2 = 1),
  an_integer_array = array(rbinom(24, size = 8, prob = 0.5), dim = c(2, 3, 4)),
  a_numeric_array = array(rweibull(24, shape = 1, scale = 1), dim = c(2, 3, 4)),
  a_data_frame = data.frame(int = rgeom(24, prob = 0.5), num = runif(24)),
  a_factor = factor(month.abb),
  a_formula = y ~ x,
  a_closure_function = mean,
  a_builtin_function = length,
  a_special_function = `if`
)

# Loop over some_vars calling type_info() on each element to explore them
___
コードを編集して実行