平時讀取一個表格文件通常使用read.table
函數,但當遇到上百M或上G的文件時,就讀的非常慢了。
有個函數fread()
,來自data.table
包,可以更快地讀取表格文件,速度可以快近十倍。
比如現在有個基因組注釋文件Homo_sapiens.GRCh37.87.gtf
,大小為1.1G,分別使用 read.table()
和 fread()
讀取所用的時間分別為:
fileIn = "Homo_sapiens.GRCh37.87.gtf"
# read.table()
start = Sys.time()
Tx = read.table(fileIn, sep = "\t", header = FALSE, stringsAsFactors = FALSE)
end = Sys.time()
> end - start
Time difference of 29.71594 secs
# fread()
start = Sys.time()
> Tx = fread(fileIn, sep = "\t", header = FALSE, stringsAsFactors = FALSE)
|--------------------------------------------------|
|==================================================|
end = Sys.time()
> end - start
Time difference of 3.99352 secs
時間分別為30s 和 4s !
而且對于很大的表格,fread()還會提供讀取進度條,非常滴友好~