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

时间:2013-03-26 16:46:40

标签: r parallel-processing plyr

我正在尝试使用R中的parallel包进行并行操作而不是doSNOW,因为它是内置的,表面上是R Project想要的方式。我做错了,但我不能确定。以此为例:

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)

这很好用,产生了我的两列的总和。但是,如果我尝试引入并行包:

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 

我初始化后端是错误的吗?

2 个答案:

答案 0 :(得分:23)

尝试此设置:

library(doParallel)
library(plyr)

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

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

stopCluster(cl)

由于我从未使用plyr进行并行计算,因此我不知道为什么会发出警告。结果无论如何都是正确的。

答案 1 :(得分:-2)

aaply州的文档

  

.parallel:if'TRUE',并行应用函数,并行使用             foreach提供的后端

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