什么是最快读入R的文件格式?

Jam*_*lia 7 csv load r rdata

似乎最直观的是.rdata文件可能是加载R的禁用文件格式,但是当扫描一些堆栈帖子时,似乎更多的注意力是增加.csv或其他格式的加载时间.有明确的答案吗?

Phi*_*hil 7

没有一个明确的答案,但下面的时候,它走上加载相同的数据帧读取作为.tab与文件utils::read.delim(),readr::read_tsv(),data.table::fread()和作为一个二进制.RData文件中使用定时system.time()功能:

.tabutils::read.delim

system.time(
  read.delim("file.tab")
)
#   user  system elapsed 
# 52.279   0.146  52.465
Run Code Online (Sandbox Code Playgroud)

.tabreadr::read_tsv

system.time(
  read_tsv("file.tab")
)    
#   user  system elapsed 
# 23.417   0.839  24.275
Run Code Online (Sandbox Code Playgroud)

.tabdata.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 
Run Code Online (Sandbox Code Playgroud)

.RData 同一数据帧的二进制文件

system.time(
  load("file.RData")
)
#    user  system elapsed 
#   2.181   0.028   2.210
Run Code Online (Sandbox Code Playgroud)

显然不是明确的(样本大小= 1!),但在我的情况下,500MB数据帧:

  1. 二进制.RData是最快的
  2. data.frame::fread() 紧随其后
  3. readr::read_tsv 比慢一个数量级
  4. utils::read.x 是最慢的,只有一半快 readr