我使用R
(3.1) and plyr
anddoMC
作为并行后端(据我所知,这是唯一可以使用的并行后端plyr
)
我的问题是如何从工作线程中写入全局变量。我有这个(非常人为的)例子:
library(doMC)
library(plyr)
registerDoMC(cores=2)
result1 = data.frame(id=c(1:3), a=NA)
result2 = data.frame(id=c(1:3), b=NA)
f = function(x){
result1[ result1$id==x$id, "a"] <<- x$a
result2[ result2$id==x$id, "b"] <<- x$b
}
data = data.frame(id=c(1:3), a=c(4:6), b=c(7:9))
a_ply(data, .margins=1, .fun=f, .parallel=T)
因为我想填充 2 个我不能使用的数据框aaply
或adply
. 这个例子做了它应该做的事情parallel=FALSE
。当我并行执行时,结果 data.frames 保持为空。我知道我必须将全局变量导出给工作人员,我尝试使用.paropts=list(.export=c("result1", "result2"))
,但这无济于事....
有人知道如何将全局变量导出给doMC
工人吗?或者是否有另一种解决方案可以在并行环境中填充两个 data.frames(mazbe 没有plyr
?)