R:在集群/并行环境中按组聚合多列

问题描述

我正在一个包含许多组的大型数据集上运行引导程序,并且正在并行环境中执行此操作。我想按组汇总/总结每个模拟。这是我对示例数据的尝试:

library(parallel)
cl <- makeCluster(detectCores()-1)  
clusterEvalQ(cl,library(MASS))

# create sample data
df <- data.frame(c("g1","g1","g2","g2"),c(1,2,3,4,5,6,7,8),c(9,10,11,12,13,14,15,16),c(17,18,19,20,21,22,23,24))

# rename columns
colnames(df) <- c("Group","sim1","sim2","sim3")

#import data into cluster
clusterExport(cl,c("df"))
output <- parSapply(cl,1:1,function(i,...) {x <- aggregate(.~Group,df,FUN = sum)} )
stopCluster(cl)

我实际上得到了我想要的数字结果,但采用“列表列表”格式: "list output"

然后我可以把它输出到我想要的输出

desired_output <- do.call(cbind,output)

顺便说一句,聚合在集群外按预期工作,即:

desired_output <- aggregate(.~Group,FUN = sum) 

问题:有没有办法在不那么“笨拙”的并行环境中做到这一点?

更普遍的奖励问题:是否有一种方法可以在并行环境中运行 R 中的事物,以实现 R 的全部(或至少较少限制)功能?我觉得我需要调整某些任务来适应这种环境,可能的答案是我只是不确定自己在做什么。

我是通过集群运行进程的新手(实际上通常是 R),所以如果它很明显,请原谅我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)