我有一个很大的对象列表(比如 100k 个元素)。每个元素都必须由一个“进程”函数处理,但我想分块进行处理......例如,20 次通过,因为我想将处理结果保存到硬盘驱动器文件中并保持操作内存空闲。
我是 R 新手,我知道它应该涉及一些应用魔法,但我不知道该怎么做(还)。
任何指导将不胜感激。
一个小例子:
objects <- list();
for (i in 1:100){
objects <- append(objects, 500);
}
objects;
processOneElement <- function(x){
x/20 + 23;
}
我想一次处理前 20 个元素并保存结果,然后再处理第二个 20 个元素并保存结果......等等
objects <- list();
for (i in 1:100){
objects <- append(objects, 500);
}
objects;
process <- function(x){
x/20 + 23;
}
results <- lapply(objects, FUN=process)
index <- seq(1, length(objects), by=20);
lapply(index, function(idx1) {
idx2 <- min(idx1+20-1, length(objects));
batch <- lapply(idx:idx2, function(x) {
process(objects[[x]]);
})
write.table(batch, paste("batch", idx1, sep=""));
})