1
私は毎月70MBのレポートファイルを持っています。私は一つのファイルにマージするには、次の関数を書いた:関数の内部ではなく外部(R)に書くときにメモリが不足する
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")
}
しかし、それは、次のエラーが発生:私は最終的fwrite
アウトを取り、代わりに、関数の出力を割り当てた場合、しかし、
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)
変数に、私は問題なしでそれを書くことができます。私はここで何が起こっているのか理解したいと思います(もし私がしようとしていることを達成するためのより効率的な方法があればそれも素晴らしいでしょう)。
もし 'rm'データリストであれば、' fwrite'は何を書くべきかを知っていますか?私は 'datalist
zipzapboing
さて、 'gc()'を追加するだけで問題が解決されました。ありがとう! – zipzapboing
私はリストと結合されたテーブルが同じ名前を持っていたことを忘れました。 –