在R中保存foreach循环的多个结果

时间:2014-09-22 06:06:40

标签: r for-loop foreach

假设我有以下简单的 循环用于模拟和OLS估算:

set.seed (12345)
m <- rnorm(20, 0, 1)
n <- 10
b1 <- 0.5
b2 <- 2
model1_b <- matrix(nrow=n, ncol=2)
model2_b <- matrix(nrow=n, ncol=2)
error <- matrix(nrow=20, ncol=n)

for (a in 1:2){
 for (b in 1:4){

   x <- (m+a)/b

   for (r in 1:10){
     repeat {

       e <- rnorm(20, 0, 0.5) # the error term
       error[,r] <- e

       # OLS estimation of Model_1
       y=b1 + b2*x + e # the true model 1
       Model_1 <- lm (y~x)
       model1_b[r,]=Model_1$coef

       # OLS estimation of Model_2
       y=b1 + b2*(x^2) + e # the true model 2
       Model_2 <- lm (y~x)
       model2_b[r,]=Model_2$coef

       if (Model_1$coef[1]!=0 & Model_2$coef[1]!=0) {break}

     } # end of repeat{} loop
    } # end of for(r){} loop
   } # end of for(b){} loop
  } # end of for(a){} loop

  error
  model1_b
  model2_b

我想将这些嵌套的 for 循环转换为嵌套的 foreach 循环,这样我就可以并行计算。正如您所看到的,循环中生成的数据(例如错误 model1_b model2_b )将逐一保存在矩阵中在运行循环之前定义。我的问题是:如何在 foreach 循环中保存这些结果?无论是在列表,数据框架还是矩阵中。

(注意:我的实际模型要复杂得多,第一个(外部)和第二个循环的大小相对较小。但是第三个(内部)循环非常大。也许我不需要嵌套的foreach如果你们可以教我如何在两种情况下保存结果(使用三个嵌套的foreach循环并仅在内循环上使用foreach),真的很感激。如果你们可以教我如何在两种情况下保存结果,那真的很感激。

1 个答案:

答案 0 :(得分:0)

关于foreach循环中的商店结果(错误,model1_b和model2_b),答案可以在Saving multiple outputs of foreach dopar loop

找到 可以使用

和%dorng%代替使用%dopar%。