的foreach错误 “无法找到函数 ”%做%“”

问题描述:

我运行此代码的foreach错误 “无法找到函数 ”%做%“”

.... 
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 
       } 
      } 
} 

任何想法,为什么这个错误发生时,我得到

Error in { : task 1 failed - "could not find function "%do%"" 

?谢谢!

+0

它的工作原理!完善。谢谢 – jpcgandre 2014-09-11 10:21:26

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

尝试增加.packages="foreach"你的第一线,即:

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

附加说明:该foreach包定义操作%:%,旨在简化这种类型的嵌套for循环。

要了解更多信息,请

library(foreach) 
vignette("nested")