jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

R言語での変数の型確認の重要性(1)

今回は、R言語で統計解析を学び始めた人にとって分かりにくい点について書きます。

Rの変数オブジェクトは型宣言しないが、型がある

Rは、統計パッケージアプリケーションという捉え方と、データ処理のためのプログラム言語という捉え方があります。後者に関してRを特徴づける方法がいくつもあります。その1つが変数の定義方法です。C言語pythonでは、変数を作成するときに、その変数の性質を決めるために型の宣言を行います。例えばxという変数が整数を扱う変数であればintという型を与え、文字列を扱う変数ならstringという型を与えます。一方、Rでは、このような型宣言なしで変数を作成できます。ただし、Rでも変数には以下のように幾つかのタイプがあります。

  • NULL型:NULLつまり空のオブジェクトを扱うための型です。
  • 命題:真(TRUE)または偽(FALSE)だけを扱うための型です。以下で述べるような型変換のプロセスを経ると1または0を入力として受け付けることができます。
  • 文字列:文字列を扱うための型です。
  • 数値:数値を扱うための型です。

型は変換が可能

オブジェクトの方は変換が可能なのですが、その方向性は次のように決まっています。

NULL型→命題型→数値型→文字列

つまり、命題型を数値型に変換できるが、文字列型は数値型には変換できません。

型確認の方法

型を確認する方法がいくつかあります。一つはclass関数です。引数として型を知りたいオブジェクトを指定すると、そのオブジェクトの型が出力されます。もう一つはstr関数です。この関数の引数としてデータフレームオブジェクトを設定すると、そのデータフレームに含まれる変数の型を一つずつ示してくれます。

Rのオブジェクトは宣言時に型を指定しない

R言語では、オブジェクトの型が、代入される値によって決まります。なので、自分がオブジェクトに何を代入するのか(したのか)を把握しないと後々、エラーにつながってきます。この投稿の続きでは、そんなエラーが現れやすい例として回帰分析を取り上げる予定です。