r - 是否有任何正当理由不使用 fread() 和 fwrite() 而不是 read.csv() 和 write.csv()?

标签 r csv data.table read.csv

<分区>

fread()fwrite() 是 R 中 data.table 包的一部分,它们的执行速度明显快于基础 read.csv()write.csv() 函数。

当我处理巨大的 csv 文件(大小为几 GB)时,我现在发现自己总是在基本函数上使用 fread()fwrite() read.csv()write.csv() 因为它们的执行速度明显更快。

我现在开始怀疑 read.csv()write.csv() 是否有任何正当理由(而不是单纯的意见)表现更好比 fread()fwrite()

有没有这样的原因?

最佳答案

utils 包中的基本读取函数可以做到而 fread 不能做到的一件事是从任何类型的文本连接读取数据。

例如,假设有一个名为 sample.zip 的存档,并且在这个存档中有一个名为 sample.csv 的文件,其中包含以下行:

A,B
1,x
2,y

read.csv 无需解压即可读取该文件:

zipcon <- unz("sample.zip", "sample.csv")
base_result <- read.csv(zipcon)
base_result
#   A B
# 1 1 x
# 2 2 y

fread 不能:

library(data.table)

zipcon <- unz("sample.zip", "sample.csv")
dt_result <- fread(zipcon)
# Error in fread(zipcon) : 
#   'input' must be a single character string containing a file name, a command,
#   full path to a file, a URL starting 'http[s]://', 'ftp[s]://' or 'file://',
#   or the input data itself

关于r - 是否有任何正当理由不使用 fread() 和 fwrite() 而不是 read.csv() 和 write.csv()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45673803/

相关文章:

r - 在 R 中合并两个数据帧时进行聚合

r - updateSelectInput 无法清除输入对象

r - 描述性表格 - 如何创建包含数值变量和分类变量的表格

r - R 系统发育重建中的混合数据分区

python - 根据列中的数据合并两个 CSV 文件

r - 如何根据数据的整体顺序更改特定的分类变量

r - 如何在 R Studio 演示文稿 (Rpres) 中包含 plotly

mysql:在现有表中导入csv

csv - awk:如何过滤掉所有条目(16 列)都为 0 的行

r - 加速大型数据帧中的 3 列 R 搜索