平时读取一个表格文件通常使用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()还会提供读取进度条,非常滴友好~
网友评论