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")
}
그러나 다음과 같은 오류가 발생합니다
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
을 경우 변수에, 나는 문제없이 쓸 수있다. 나는 여기서 무슨 일이 벌어지고 있는지 이해하고 싶다. (그리고 내가하는 일을 성취하기위한보다 효율적인 방법이 있다면 그렇게해도 좋을 것이다.) fwrite
의 호출하기 전에 일부 메모리
gc()
을 삭제
만약 내가'rm' 데이터리스트라면'fwrite'는 무엇을 쓸지 어떻게 알 수 있을까요? 필자는'datalist
zipzapboing
좋아요, 단지'gc()'를 추가하면 문제가 해결되었습니다. 감사! – zipzapboing
나는리스트와 결합 된 테이블이 같은 이름을 가지고 있다는 것을 놓쳤다. –