scan によるテキストデータの読み込み
以下のようなデータを読み込みたいとします.
# test.txt X1 X2 X3 X4 1 0.3 0.2 0.2 0.4 2 0.5 0.1 0.2 0.2 3 0.1 0.3 0.2 0.1
write.table で書きだしたときのような形式ですね.
read.table だと,list型で読み込まれてしまいますが,
> x <- read.table("test.txt", header = TRUE, row.names = 1) > mode(x) [1] "list" > x X1 X2 X3 X4 1 0.3 0.2 0.2 0.4 2 0.5 0.1 0.2 0.2 3 0.1 0.3 0.2 0.1 >
scan ならvector 型で読み込んでくれます.
> y <- scan("test.txt", skip = 2) # skip は先頭から何行とばして読み込むかを指定 Read 15 items > mode(y) [1] "numeric" > y [1] 1.0 0.3 0.2 0.2 0.4 2.0 0.5 0.1 0.2 0.2 3.0 0.1 0.3 0.2 0.1 >
matrix に変換するなら,以下のようにします.
> z<- matrix( scan("test.txt", skip = 2), nrow = 3, byrow = TRUE)[ , -1] # [ , -1] で行名を除外 Read 15 items > mode(z) [1] "numeric" > z [,1] [,2] [,3] [,4] [1,] 0.3 0.2 0.2 0.4 [2,] 0.5 0.1 0.2 0.2 [3,] 0.1 0.3 0.2 0.1 >
matrix なら,そのまま image 関数などに渡せるので便利です.
-
-
-
- -
-
-
参考
46. 落穂ひろい (R-Tips)
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/46.html