2015-07-20 62 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)