我有一个脚本,我在其中循环> 1k csv文件,合并它们并保存合并另一个csv文件。
#Loading libraries
library("dplyr")
library("data.table")
#loop over my files
for(i in seq(1,1000))
{
file <- read.csv(paste0("/my/path/", filesList[i]), stringsAsFactors=FALSE, row.names=NULL)
if(exists("merge")){
merge <- bind_rows(merge, file)
}else {
merge <- file
}
}
#Save the merged files
write.csv(merge, file="/path/merge.csv")
我收到以下错误:
Error: memory exhausted (limit reached?)
Error: segfault from C stack overflow
Error: C stack usage 140736289161248 is too close to the limit
仅供参考,在写入csv之前gc
返回
> used (Mb) gc trigger (Mb) max used (Mb)
>Ncells 504073 27.0 940480 50.3 750400 40.1
>Vcells 32397836 247.2 83331575 635.8 83281289 635.4
我为R分配了2 GB的RAM,并将有限的堆栈大小分配给1M。
我的问题分为两部分:
file
直接附加到merged.csv
文件,然后加载merged.csv
)