Rstats,如何使用大量文件优化read_csv

时间:2019-06-06 09:57:50

标签: r

我有一个csv文件文件夹,我正在尝试使用read_csv读取所有这些文件,它可以很好地处理12个文件,但此后出现此错误

r:无法分配大小为2.8 Mb的向量

这是csv文件的链接,我手动下载文件并解压缩 http://nemweb.com.au/Reports/Archive/Daily_Reports/

library(tidyverse)
data_path <- "C:/Users/csv2/"   # path to the data
files <- dir(data_path, pattern = "*.CSV") # get file names

data <- files %>%
  # read in all the files, appending the path before the filename
  map(~ read_csv(file.path(data_path, .),col_types = cols_only(DISPATCH = col_guess(),
                                                               '1'=col_character(),
                                                               SETTLEMENTDATE = col_character(),
                                                               INTERVENTION = col_character(),
                                                               CASESUBTYPE = col_character(),
                                                               SOLUTIONSTATUS = col_character(),
                                                               NONPHYSICALLOSSES = col_character()),
                                                               skip = 1)) %>% 
  reduce(rbind)
data = rename(data,aemo='1')
data = filter(data,aemo=='2')
data = filter(data,DISPATCH=='TREGION' | DISPATCH=='DREGION' | DISPATCH=='DUNIT' | DISPATCH=='TUNIT')

我尝试了fread,但是它不喜欢这种格式,因为它具有不同数量的标题

1 个答案:

答案 0 :(得分:2)

正如@wimpel正确指出的那样,请使用data.table。它以较低的计算机资源消耗而闻名,也是最快的计算机资源之一。

请参考GitHub中的以下示例:https://github.com/f0nzie/fread-benchmarks-rsuite

您将立即注意到,对于相同大小的输入文件,fread消耗的RAM少于使用r-basetidyverse完成的RAM的1/10。

enter image description here