2015-07-20 61 views
1

我正在尝试为我的项目使用foreach,并且我不断收到错误,表示无法找到foreach的迭代计数器。这是我的代码。R foreach函数无法找到与souce函数的计数器

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

您需要在源当地的说法:

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)