问题描述
我正在一个包含许多组的大型数据集上运行引导程序,并且正在并行环境中执行此操作。我想按组汇总/总结每个模拟。这是我对示例数据的尝试:
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 (将#修改为@)