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
>
今度は正しく読めました。


コメント