09. データの型


R には「データの型」という概念があり,実数や複素数,文字列などをそれぞれ別の型として区別している.

空 → NULL

「何もない・空っぽ」というものを,R では NULL と表現する.0 と混同しがちだが,NULL は 『何もない・0 すらない』という意味である.後に出てくるが,配列の初期値や names 属性などの属性を取り除くのに使われたり,for などの反復演算を行うときの配列やデータリストの初期値として用いられる.

 
 x <- c()

NULL

欠損値・不定データ → NA,非数 → NaN,無限大 → Inf

欠損値 (Not Available) は NA ,非数 (Not a Number) は NaN で表される.

 
 NA              # データの欠損を表す

[1] NA 

 0/0             # 数では表せないことを表す

[1] NaN

 1/0             # 無限大になる場合は NaN とは別に Inf というものがある

[1] Inf 

複素数 → complex

1 と 1+0i は違う.また,虚数 1+i を表すときは 1+1i と表記すること.1+i とすると i はオブジェクト(変数など)と認識される.

 
 1 + 1i

[1] 1+1i

 1 + 0i     # 1 とは異なる

[1] 1+0i

実数から複素数に自動的に型変換がなされることはない.以下の例より,-2 と -2+0i は異なることが分かる.

 
 log(-2)

[1] NaN
警告メッセージ:
計算結果が NaN になりました in: log(x) 

 log(-2+0i)

[1] 0.6931472+3.141593i  

文字列 → character

1文字ではなく,引用符 "" で囲んだ文字列が単位である. 文字列中にダブルクオートまたはシングルクオートを含めるには,これらの文字の前にバックスラッシュ( \ または \ ) を置けばよい.

 
"abc"

[1] "abc"

 ""      # ダブルクオート" が 2 つあるという意味ではないので注意
 
[1] ""   # 中身は" と" の中にあるもの(ここでは何も無いことを表す) 

 ' ' で囲んでも良い.ただし \ と \ は例外.

論理値 → logical

論理値は TRUE (真)  と FALSE (偽)  の値をとる.これらはそれぞれ T,F と略記することも出来る.TRUE や FALSE は文字列ではないので注意.

 
 T

[1] TRUE

 TRUE

[1] TRUE 

T と F は,それぞれ TRUE と FALSE が代入されているだけである.よって,T や F に TRUE や FALSE 以外の値を代入することも出来る(決してお勧めはしない).

日付 → Date

R では日付データと文字列を区別している.

 
 x <- "2012/08/15"
 is.character(x)

[1] TRUE

 y <- as.Date(x)
 is.character(y)

[1] FALSE