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



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

最新更新