data.table :: fread()崩溃了更大的csv文件

时间:2017-09-11 14:38:49

标签: r csv data.table

我正在处理大的 csv 文件(~500-700MB),所以我正在按块查看它们。我尝试了read.csv()函数,但由于要跳过的行的数量增加,因此速度非常慢,因此我发现data.table::fread()是一种更快的读取文件的方式。(R-Blogger和{{3}但是当我正在阅读带有fread()的60MB csv文件时它工作正常stackOverflow但是当我在相同类型的更大文件(~450MB)上尝试它时,它会显示 R Session中止 (Reading 60MB file)两个文件具有相同的结构,只是大小不同。我无法理解为什么它不起作用,因为人们正在阅读更大尺寸的文件。

这是我的代码段 -

library(data.table)
ffName = "Bund001.csv"

s<- Sys.time()


ColNamesVector <<- c("RIC","Date","Time","GMT_Offset","Type","Price","Volume","Bid_Price","Bid_Size","Ask_Price","Ask_Size","Qualifiers")


rawData <- fread(ffName,sep=",",nrows = 100000,skip = 400000,col.names = ColNamesVector)



print(Sys.time()-s)

2 个答案:

答案 0 :(得分:3)

您先检查NEWS吗? (其他提示在data.table Support page上。)

您的问题中包含的屏幕截图显示您正在使用1.10.4。幸运的是,目前NEWS显示自那时起fread已经进行了14次改进,其中许多与您的问题相关。请尝试开发。 installation page解释了Windows的预编译二进制文件是为您制作的,以及如何获取它。您不需要安装任何工具。该页面解释说,如果不能解决问题,您可以轻松恢复。

请从开发人员尝试v1.10.5并接受此答案,如果修复它。

答案 1 :(得分:-2)

这与尺寸无关,这意味着您的CSV略微超出了规格。

我建议尝试readr,它有点慢,但更容忍错误

https://github.com/tidyverse/readr