fread()
和fwrite()
是R中data.table
个软件包的一部分,它们的执行速度明显快于基础read.csv()
和write.csv()
函数。
当我处理大量csv文件(大小为几GB)时,我现在发现自己总是在基本函数fread()
和fwrite()
上使用read.csv()
和write.csv()
它们表现得更快。
我现在开始怀疑是否有任何正当理由(而不仅仅是意见)read.csv()
和write.csv()
的效果优于fread()
和fwrite()
。< / p>
有没有这样的理由?
答案 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