为什么plyr包不使用我的并行后端?

8

我正在尝试使用R中的parallel包进行并行操作,而不是doSNOW,因为它是内置的,显然这也是R项目想要的方式。但是我无法确定自己做错了什么。例如,考虑以下代码:

a <- rnorm(50)
b <- rnorm(50)

arr <- matrix(cbind(a,b),nrow=50)

aaply(arr,.margin=1,function(x){x[1]+x[2]},.parallel=F)

这很好,可以生成我两列的总和。但是如果我尝试引入parallel包:
library(parallel)
nodes <- detectCores()
cl <- makeCluster(nodes)
setDefaultCluster(cl)

aaply(arr,.margin=1,function(x){x[1]+x[2]},.parallel=T)

它抛出了错误。
2: In setup_parallel() : No parallel backend registered
3: executing %dopar% sequentially: no parallel backend registered 

我初始化后端的方法有误吗?

对于任何查看此帖子的人,我早已放弃了Parallel,转而使用doParallel,它似乎可以正常工作。 - Patrick McCarthy
2个回答

24

试试这个设置:

library(doParallel)
library(plyr)

nodes <- detectCores()
cl <- makeCluster(nodes)
registerDoParallel(cl)

aaply(ozone, 1, mean,.parallel=TRUE)

stopCluster(cl)

由于我从未使用 plyr 进行并行计算,所以我不知道为什么会出现这些警告。不过结果是正确的。


-2

aaply 的文档说明如下:

.parallel: 如果设置为“TRUE”,则使用 foreach 提供的并行后端在并行中应用函数。

因此,您需要使用 foreach 包而不是 parallel 包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接