我正在尝试将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"
任何人都知道如何解决这个问题?
谢谢!
答案 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)