我有一个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,但是它不喜欢这种格式,因为它具有不同数量的标题
答案 0 :(得分:2)
正如@wimpel正确指出的那样,请使用data.table
。它以较低的计算机资源消耗而闻名,也是最快的计算机资源之一。
请参考GitHub中的以下示例:https://github.com/f0nzie/fread-benchmarks-rsuite。
您将立即注意到,对于相同大小的输入文件,fread
消耗的RAM少于使用r-base
或tidyverse
完成的RAM的1/10。