2016-06-11 47 views
1

我在foreach內部遇到一些問題。我加載羣集,併成立了幾個向量:foreach無法在foreach中使用`i`(i = 1:N)

library(doParallel) 
ncores <- detectCores() - 2 
cl <- makeCluster(ncores, outfile="", port=11439) 
registerDoParallel(cl)  

results <- rep(NA,10) 
values <- 20:30 

然後,它不工作:

# Error: object 'i' not found 
foreach(i=1:10) %dopar% 
    results[i] <- i 

stopCluster(cl) 

雖然這確實:

# ok 
foreach(i=1:10) %dopar% 
    values[i] 

stopCluster(cl) 

怎麼會發現i時它用在左側的[i]內,但在右側使用時找不到它?

+1

您是否嘗試添加大括號? '''foreach(...)%dopar%{...}''' – loki

+0

哦,天啊!它確實有效!到底是怎麼回事? – alberto

回答

3

從我的評論:

試着用大括號。

foreach(i=1:10) %dopar% { 
    results[i] <- i 
} 

不只是在這個例子中,我經歷過在R中使用花括號更好。許多問題都可以通過使用它們來避免。顯然,這些小助手還有一些更多的優點,如瀏覽互聯網時可能會看到的(例如see here)。

相關問題