在Windows上并行执行ddply()的简单工作示例

SFu*_*n28 22 foreach r plyr

我一直在寻找一个简单的并行使用ddply()的工作示例.我已经安装了"foreach"软件包,但是当我调用ddply(.parallel = TRUE)时,我收到一条警告:"没有并行后端注册"

有人可以提供一个简单的并行使用ddply的工作示例吗?

Sha*_*ane 18

这是一个简单的工作示例:

> df <- data.frame(val=1:10, ind=c(rep(2, 5), rep(3, 5)))
> library(doSNOW)
> registerDoSNOW(makeCluster(2, type = "SOCK"))
> system.time(print(ddply(df, .(ind), function(x) { Sys.sleep(2); sum(x) }, .parallel=FALSE)))
  ind V1
1   2 25
2   3 55
   user  system elapsed 
   0.00    0.00    4.01 
> system.time(print(ddply(df, .(ind), function(x) { Sys.sleep(2); sum(x) }, .parallel=TRUE)))
  ind V1
1   2 25
2   3 55
   user  system elapsed 
   0.02    0.00    2.02 
Run Code Online (Sandbox Code Playgroud)

  • ddply现在支持这个非常好.谢谢你把这个挖出墓地! (2认同)

Dir*_*tel 6

你注册了并行后端foreach吗?

在使用foreach之前,您可能需要阅读使用方法plyr.


SFu*_*n28 6

答:我一直在和哈德利沟通,并且在不久的将来没有计划修复这个错误.任何人都可以尝试修复本身.以下是我从哈德利收到的一些提示:

"在最简单的层面上它相对容易 - 你只需要将一个.export参数传递给foreach.理想情况下,plyr会想出自动导出的内容,但同时修改.parallel以获取foreach的参数列表(而不仅仅是T/F)将是一个很大的进步.从llply开始,如果你能做到这一点,那么让所有其他功能也能正常工作是相当微不足道的."

B.我强烈推荐使用snow和doSNOW来获得并行的foreach以在Windows上工作.另一个并行后端要么:1.不支持Windows 2.不能在64位Windows 3上工作.应该在Windows上工作,但是太麻烦了.snow/doSNOW是唯一能够"开箱即用"的解决方案

祝你好运!