似乎最直观的想法是.rdata文件可能是R加载速度最快的文件格式,但是在查阅一些堆栈帖子时,似乎更多的关注点是提高.csv或其他格式的加载时间。是否有明确的答案?
以下并非确定性答案,但下面是使用utils::read.delim()
、readr::read_tsv()
、data.table::fread()
读取相同的数据框作为.tab
文件和二进制.RData
文件所需的时间,使用system.time()
函数计时:
utils::read.delim()
读取.tab
文件system.time(
read.delim("file.tab")
)
# user system elapsed
# 52.279 0.146 52.465
.tab
with readr::read_tsv
system.time(
read_tsv("file.tab")
)
# user system elapsed
# 23.417 0.839 24.275
.tab
和data.table::fread
根据@Roman的要求,同样大小为约500MB的文件在3秒内加载完成:
system.time(
data.table::fread("file.tab")
)
# Read 49739 rows and 3005 (of 3005) columns from 0.400 GB file in 00:00:04
# user system elapsed
# 3.078 0.092 3.172
.RData
二进制文件包含相同数据框的内容system.time(
load("file.RData")
)
# user system elapsed
# 2.181 0.028 2.210
显然不是最终结论(样本量=1!),但以我的500MB数据框为例:
.RData
文件是最快的data.frame::fread()
排名第二readr::read_tsv
慢一个数量级utils::read.x
最慢,只有readr
的一半速度fread
会如何处理这个?愿意试一试吗? - Roman LuštrikcolClasses
会提高读取 tsv 文件的速度。包含这个比较可能是值得的。 - nrussell