并行,foreach,未找到导出的对象

时间:2016-08-01 09:35:29

标签: r parallel-processing

我有以下(示例)代码,它在计算集群上以被动模式执行:

> foo <- function(...)
> {
> require(copula)
> require(foreach)
> require(methods)
> require(np)
> require(parallel)
> {cl <- makeCluster(detectCores()-1) ; registerDoParallel(cl)}
...
> str(dat)
'data.frame':   31269 obs. of  15 variables
...
> clusterExport(cl=cl,varlist=c("dat",...))
> dumpster <- foreach(i=1:10,.packages=c("copula","foreach","np"),.export=c("dat"))%dopar%
> {... ; dat.new <- some.fn(dat) ; ...}
...
> stopCluster(cl)
> }
> foo(...)
Error in get(name, envir = envir) : object 'dat' not found
Calls: foo ... postNode -> sendData -> sendData.SOCKnode -> serialize -> get
Execution halted

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你混淆了一些指令,为了做这个命令

dat

我假设对象dumpster <- foreach(i=1:10,.packages=c("copula","np"), .combine = c)%dopar%{dat.new <- some.fn(dat)} 已经可用,所以这就是你使用foreach的方式

stopCluster(cl)

然后关闭群集

{{1}}