R foreach函数无法找到具有源函数的计数器

时间:2015-07-20 22:03:13

标签: r foreach

我正在尝试将foreach用于我的项目,并且我一直收到错误,说无法找到foreach的迭代计数器。这是我的代码。

library(doSNOW)
a=20
seed=10
cl=makeCluster(4,type="SOCK",outfile="")
clusterExport(cl,"a")
registerDoSNOW(cl)
x=foreach(i=1:100,.combine="c",.multicombine=T) %dopar% {
  print(i)
  set.seed(seed+i)
  source("d:\\play\\foreach source.r")
}
stopCluster(cl)

“foreach source.r”代码如下:

rnorm(1e5)+a+i

以下是我得到的错误:

Error in { : task 1 failed - "object 'i' not found"

任何人都知道如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要源中的本地参数:

library(doSNOW)
a=20
seed=10
cl=makeCluster(4,type="SOCK",outfile="")
clusterExport(cl,"a")
registerDoSNOW(cl)
x=foreach(i=1:100,.combine="c",.multicombine=T) %dopar% {
  print(i)
  set.seed(seed+i)
  source("d:\\play\\foreach source.r", local = TRUE) # <---- HERE
}
stopCluster(cl)