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