【问题标题】:What are the file formats that read into R the fastest?读入 R 最快的文件格式是什么?
【发布时间】:2015-08-20 08:47:57
【问题描述】:

.rdata 文件可能是 R 加载的禁食文件格式似乎是最直观的,但是在扫描一些堆栈帖子时,似乎更多的注意力集中在提高 .csv 或其他格式的加载时间上。有确定的答案吗?

【问题讨论】:

  • 这是一个很难正确回答的问题。例如,您需要考虑将任何给定的文件读取函数转换为已编译和优化的 c 或 Fortran 代码。此外,由于您通常无法选择输入格式,除非您首先生成 in R 文件,因此我不确定答案是否真的重要!

标签: r csv load readr rdata


【解决方案1】:

不是一个明确的答案,但下面是加载相同的数据帧读取为 utils::read.delim()readr::read_tsv()data.table::fread().tab 文件和作为二进制 .RData 文件使用的时间system.time()函数:

.tabutils::read.delim

system.time(
  read.delim("file.tab")
)
#   user  system elapsed 
# 52.279   0.146  52.465

.tabreadr::read_tsv

system.time(
  read_tsv("file.tab")
)    
#   user  system elapsed 
# 23.417   0.839  24.275

.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 

.RData同一个dataframe的二进制文件

system.time(
  load("file.RData")
)
#    user  system elapsed 
#   2.181   0.028   2.210

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

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

【讨论】:

  • 我想知道fread 会如何处理这个问题?愿意试一试吗?
  • @Phil 我很确定指定 colClasses 会提高 tsv 文件的读取时间。包括这种比较可能是值得的。
  • 但是 R 花了多长时间生成每种文件类型?正如我在上面提到的,当其他人以给定格式向您发送文件时,这种比较是没有意义的。
  • 感谢您的分析。之间非常明显的差异。
猜你喜欢
  • 1970-01-01
  • 2022-07-10
  • 2021-12-08
  • 2010-10-12
  • 1970-01-01
  • 2011-12-23
  • 2013-10-24
  • 1970-01-01
相关资源
最近更新 更多