外环的并行化在旋转中工作,但在正常R中不起作用

外环的并行化在旋转中工作,但在正常R中不起作用,r,loops,foreach,nested,R,Loops,Foreach,Nested,我试图并行化一个外循环,同时按顺序运行内循环。当使用doSMP软件包时,以下代码以旋转方式工作,但当使用foreach和doParallel软件包时(两个R版本都在Windows计算机上),它在base R中不工作。错误消息是:找不到函数“%do%”。有没有办法解决这个问题 foreach(j = X, .combine = c) %dopar% { Z=1 foreach(i = Y, .combine = c) %do% { paste(j, i, Z,

我试图并行化一个外循环,同时按顺序运行内循环。当使用
doSMP
软件包时,以下代码以旋转方式工作,但当使用
foreach
doParallel
软件包时(两个R版本都在Windows计算机上),它在base R中不工作。错误消息是:
找不到函数“%do%”
。有没有办法解决这个问题

foreach(j = X, .combine = c) %dopar% { 
    Z=1
    foreach(i = Y, .combine = c) %do% { 
        paste(j, i, Z, sep = "") 
    } 
}

通常,如果需要在
foreach
循环中使用包,则应使用“.packages”选项指定它。甚至对于
foreach
包本身也是如此:

library(doParallel)
cl <- makePSOCKcluster(3)
registerDoParallel(cl)
foreach(j = X, .combine = c, .packages='foreach') %dopar% { 
    Z=1
    foreach(i = Y, .combine = c) %do% { 
        paste(j, i, Z, sep = "") 
    } 
}
库(双并行)

cl谢谢Steve,这帮了很多忙。这只适用于foreach包没有使用
parallel
作为后端的情况,对吗?我没有这个问题。@TrevorAlexander在doMC的情况下不需要它。但这是Windows上常见的问题源,因为doMC示例无法工作,或者在使用doSNOW或doMPI的集群上运行时无法工作。