为什么不plyr包用我的并行后端?(Why doesn't the plyr package

2019-08-18 01:21发布

我试图使用parallel包中的R的并行操作,而不是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)

这一切正常,我的生产两列的总和。 但是,如果我尝试在平行包携带:

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 

我在初始化后端错了吗?

Answer 1:

试试这个设置:

library(doParallel)
library(plyr)

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

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

stopCluster(cl)

因为我从来没有使用plyr并行计算我不知道为什么这样发出警告。 其结果是正确的反正。



Answer 2:

对于文档aaply状态

.parallel:如果“TRUE”,在并行应用功能,采用并行后端通过的foreach提供

所以想必你需要使用foreach包,而不是parallel包。



文章来源: Why doesn't the plyr package use my parallel backend?