foreach错误“找不到函数”%do%“”

时间:2014-09-11 10:07:41

标签: r

我正在

Error in { : task 1 failed - "could not find function "%do%""
运行此代码时

....
niters = 1000
mFR <- foreach(i=1:iters, .combine=rbind) %dopar% {
          foreach(j=1:iters, .combine=c) %do% {
              mp2 <- mp[sample(1:1e6, iters)]
              fexist = 0
              if (mp2[j]>mR12[i]) {
                   Frv = 1
                   fexist = 1
              } else if (mp2[j]<=mRy2[i]) {
                   Frv = 0
                   fexist = 1
              }  else {
                   if (mRy2[i]>mR12[i]) {
                      Frv = 1
                   } else {
                      fexist = 1
                      b = mDMDuc1[i]/(1-mR12[i]/mRy2[i])
                      m = -b/mRy2[i]
                      DMDp = m*mp2[j] + b
                      Frv = (DMDp - 0)/(mDMDc2[i] - 0)
                   }
              }
              if (fexist==1) {
                 mFR <- matrix(Frv, ncol=1, nrow = 1)
                 mFR
              }
           }
}

知道这个错误发生的原因吗?谢谢!

1 个答案:

答案 0 :(得分:7)

您的并行工作人员都在干净的R会话中运行,因此您必须在每个工作人员中加载foreach包。

尝试将.packages="foreach"添加到第一行,即:

mFR <- foreach(i=1:iters, .combine=rbind, .packages="foreach") %dopar% ...{

附加说明:foreach包定义了一个运算符%:%,旨在简化此类嵌套for循环。

要了解详情,请使用

library(foreach)
vignette("nested")