%do%和%dopar%和环境变量

时间:2016-01-20 10:20:13

标签: r foreach environment-variables parallel-foreach

我注意到使用%do%%dopar%关于变量管理的不同行为。这是一个显示我的意思的MWE

library(foreach)
library(doParallel)
library(iterators)

a = 1
foreach(icount(10)) %do% {a = a + 1}
print(a)
# [1] 11

registerDoParallel(cores = 1)
a = 1
foreach(icount(10)) %dopar% {a = a + 1}
print(a)
# [1] 1

在第一种情况下a递增,而在第二种情况下,循环取副本而a不会改变。我预计%dopar%的第二个行为也适用于%do%。有没有办法在不使用%dopar%的情况下强制执行(因为我在foreach小插图中使用嵌套的foreach循环。)

0 个答案:

没有答案