有没有正当理由不在read.csv()和write.csv()上使用fread()和fwrite()?

时间:2017-08-14 11:45:40

标签: 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()。< / p>

有没有这样的理由?

1 个答案:

答案 0 :(得分:3)

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