Rの read.table の使い方。

今回はデータファイルを、データフレームとして読み込む方法まとめ。


はじめに、よく文字列をFactorでなく、Character vectorで読み込んで欲しい時があるが、
stringsAsFactors = TRUE を使うべき。
colClasses でもできるが、数字も文字列になったりして、最大、最小を求めたりするときに、ハマリやすい。 (文字列にもmax, min関数が適応できてしまい、見つかりにくいバグになる。)


dataframe の扱いは先日の記事参照
( http://d.hatena.ne.jp/t_ume_tky/20121005 )
dataframe & logical vector
( http://d.hatena.ne.jp/t_ume_tky/20121006/1349491207 )


○ read.table の使い方
read.table("*****.txt")


※ 普段から気にしておいた方がよいパラメーター
header=FALSE
sep="" # default value "" means whitespace. When tab "\t". When comma "," .
dec="." # 小数点の設定
stringsAsFactors=FALSE # 文字列 → Factor への変換設定
skip = 0 # 最初から何行読み飛ばすか。
nrows = -1 # 何行目まで読み込むか。マイナス値はファイルの最後まで。


○ read.table, read.csv の基本的な読み込み手順
http://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html
のマニュアルの、Detailsより。


・基本的な読み込み方
colClasses が指定されていない場合、
すべてが文字列として読み込まれた後に、
type.convert()関数により、logical, integer, numeric, complex or (depending on as.is) factor as appropriate に変換される。


・具体的には
数字のみ で構成された列 → numeric, integer, complex
T F TRUE FALSE のみ(小文字不可)で構成された列 → Logical
文字列がひとつでも含まれた列 → Factor
NA → 欠損値要素 として解釈 (どのデータ型に含まれていてもOK)


また、読み込まれた data frame の names は "V" followed by the column number になります。


○ 強制的にすべてのデータ型を指定する方法
上記のように読み込まれるので、colClasses を使う。 ※ 個人的に非推奨


○ 文字列を、factorでなく characters で読み込む方法
1. colClasses で設定する ※ 個人的には非推奨
colClasses=c("character","character","character")


2. as.is で設定する。
a vector of numeric or character indices which specify which columns should not be converted to factors.
ただし、colClasses の設定が優先される。


3. stringsAsFactors = TRUE で設定する。
ただし、ColClasses や as.is の設定が優先される。