假设我有以下简单的 循环用于模拟和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),真的很感激。如果你们可以教我如何在两种情况下保存结果,那真的很感激。
答案 0 :(得分:0)
关于foreach循环中的商店结果(错误,model1_b和model2_b),答案可以在Saving multiple outputs of foreach dopar loop
找到 可以使用和%dorng%代替使用%dopar%。