R言語(ファイル読み込み2)

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
>

今度は正しく読めました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA