微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。