Продолжение ответа Джошуа, есть исправление, если вы хотите ускорить эту операцию. Он вдохновлен идеологией сокращения карт, и некоторое время назад я сделал POC для образца набора данных.
Я использовал библиотеку снегопада - я думаю, вы можете работать и с doMC.
# On my phone, please pardon typos/bugs
test <- data.frame(x=1:1000000, y=rep(c(1:20), 500))
testList = list()
testList[[1]] <- test[c(1:250000),]
testList[[2]] <- test[c(250001:500000),]
testList[[3]] <- test[c(500001:750000),]
testList[[4]] <- test[c(750001:1000000),]
# Write a function for the above - Need to find optimum number of splits
sfInit(parallel = TRUE, cpus=4)
sfCluster(plyr)
meanList = sfClusterSpplyLB(testList, function(x) ddply(test, "y", mean))
sfStop()
aggregate(meanList, by=list(y), FUN=mean)
Это может помочь вам, учитывая, что мы сейчас выполняем подпрограмму раздельного объединения. Это работает для средств, когда размер разбиений одинаков, работает для сумм, мин / макс, количество и т. Д. В порядке, но есть некоторые операции, для которых мы не можем использовать это.