【发布时间】:2017-01-18 15:57:44
【问题描述】:
我有每月报告文件,每个文件大约 70MB。我编写了以下函数将它们合并到一个文件中:
fusionfil<-function(ruta){
require(data.table)
fusionfrag<-paste0(ruta,grep("_filt",dir(ruta),value = TRUE))
datalist<-list()
for(frag in fusionfrag){
datalist[[frag]] <- fread(frag,colClasses="character")
}
datalist<-do.call(rbind,datalist)
fwrite(datalist,"fusion.csv")
}
但是会导致如下错误:
Warning messages:
1: In rbindlist(l, use.names, fill, idcol) :
Reached total allocation of 8082Mb: see help(memory.size)
2: In rbindlist(l, use.names, fill, idcol) :
Reached total allocation of 8082Mb: see help(memory.size)
但是,如果我取出最终的 fwrite 并将函数的输出分配给一个变量,那么我可以毫无问题地编写它。我想了解这里发生了什么(如果有更有效的方法来实现我想要做的事情,那就太好了)。
【问题讨论】:
标签: r memory data.table