1

我注意到使用%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

4

0 回答 0