R言語、ファイル読み込み続きです。
最初に読み込むファイル作成。
takk@deb9:~/r$ seq 25 | pr -t5J > sample.txt takk@deb9:~/r$ cat sample.txt 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 takk@deb9:~/r$
read.table()を使い、sample.txtを読み込みます。
> a=read.table("sample.txt") > a V1 V2 V3 V4 V5 1 1 6 11 16 21 2 2 7 12 17 22 3 3 8 13 18 23 4 4 9 14 19 24 5 5 10 15 20 25 >
read.table()というぐらいだから、表として読み込まれたと思いましたが、リスト、データフレームのようです。
> is.table(a) [1] FALSE > is.list(a) [1] TRUE > is.data.frame(a) [1] TRUE >
アクセスはデータフレーム同様です。
> a[1] V1 1 1 2 2 3 3 4 4 5 5 > a[,1] [1] 1 2 3 4 5 > a[2,3] [1] 12 >
sample.txtはタブ区切りフォーマットなので、read.delim()も使えます。
> b=read.delim("sample.txt") > b X1 X6 X11 X16 X21 1 2 7 12 17 22 2 3 8 13 18 23 3 4 9 14 19 24 4 5 10 15 20 25 > is.data.frame(b) [1] TRUE > is.array(b) [1] FALSE > is.list(b) [1] TRUE >
カンマ区切りデータの場合は、 read.csv()が使えます。
samplet.txtは、タブ区切りデータなので、これに使用するとおかしな形で読み込まれます。
> c=read.csv("sample.txt") > c X1.6.11.16.21 1 2\t7\t12\t17\t22 2 3\t8\t13\t18\t23 3 4\t9\t14\t19\t24 4 5\t10\t15\t20\t25 >
区切り文字がカンマのファイルを読み込んでみます。
> q() takk@deb9:~/r$ tr '$\t' , < sample.txt > sample2.txt takk@deb9:~/r$ R (省略) > d=read.csv("sample2.txt") > d X1 X6 X11 X16 X21 1 2 7 12 17 22 2 3 8 13 18 23 3 4 9 14 19 24 4 5 10 15 20 25 > d[1] X1 1 2 2 3 3 4 4 5 > d[,1] [1] 2 3 4 5 >
一行目がタイトルになってしまいました。
一行目をヘッダーとして扱わないようにheader=FALSEを指定します。
> e=read.csv("sample2.txt",header=FALSE) > e V1 V2 V3 V4 V5 1 1 6 11 16 21 2 2 7 12 17 22 3 3 8 13 18 23 4 4 9 14 19 24 5 5 10 15 20 25 > e[1] V1 1 1 2 2 3 3 4 4 5 5 > e[,1] [1] 1 2 3 4 5 >
今度は正しく読めました。
コメント