[R]テキストファイルを高速で読み込む
data.tableパッケージを利用する。以下は、100万行のテキストファイルtemp.txtを作成し、Rに標準で搭載されているread.table関数と、data.tableパッケージに含まれているfread関数で、それぞれそのファイルを読み込む時間を計測した結果。
> library(data.table)
> mx <- matrix(rnorm(1000000 * 4), ncol = 4)
> write.table(mx, "temp.txt", col.names = FALSE, row.names = FALSE)
> system.time(dtf <- read.table("temp.txt", header = FALSE))
ユーザ システム 経過
7.94 0.15 8.14
> system.time(dtb <- fread("temp.txt"))
ユーザ システム 経過
0.13 0.01 0.07
> system.time(dtf <- read.table("temp.txt", header = FALSE))
ユーザ システム 経過
7.41 0.09 7.51
> system.time(dtb <- fread("temp.txt"))
ユーザ システム 経過
0.17 0.02 0.04
> dim(dtf)
[1] 1000000 4
> dim(dtb)
[1] 1000000 4
> head(dtf)
V1 V2 V3 V4
1 1.7752384 -1.4123053 0.24326013 0.5067002
2 -1.3369478 0.4076904 0.42491207 -1.6561556
3 -1.4287960 0.2838613 2.01597774 -1.0682637
4 0.7791319 0.5361162 0.05211674 0.2194605
5 -0.8555709 -0.5486108 0.11662963 2.0608156
6 0.8034380 -2.0021208 -0.29818598 -0.4815675
> dim(dtb)
[1] 1000000 4
> head(dtb)
V1 V2 V3 V4
1: 1.7752384 -1.4123053 0.24326013 0.5067002
2: -1.3369478 0.4076904 0.42491207 -1.6561556
3: -1.4287960 0.2838613 2.01597774 -1.0682637
4: 0.7791319 0.5361162 0.05211674 0.2194605
5: -0.8555709 -0.5486108 0.11662963 2.0608156
6: 0.8034380 -2.0021208 -0.29818598 -0.4815675
キャッシュの効果を考慮して、交互に2回ずつ実施している。最後に、読み込んだデータフレームとデータテーブルの次元とそれぞれの長さを表示している。ファイルの読み込みは、fread関数のほうが明らかに早いことがわかる。



