R 中嵌套的 for 循环没有产生正确的迭代次数

nested for loop in R not producing the correct amount of iterations

我有一个非常简单的 for 循环(或者我是这么认为的)。它的目的是在 20 种不同的条件下做 1000 次动作。这应该提供 20,000 的结果。相反,我得到了 1000。我的想法是我可能遗漏了一些非常微不足道的东西。

nSims <- 1000
Prop1 <- numeric(nSims * 20) 
Prop2 <- numeric(nSims * 20) 
Prop3 <- numeric(nSims * 20)
Score <- NA

for(i in 1:nSims){
for (j in 1:20){
G1 <- rnorm (10000, 100, 10)
G2 <- rnorm (10000, 100 - i/50, 10)
G3 <- rnorm (10000, 100 + i/50, 10)

Prop1 [i] = length (which (G1 > (100+j))) /length (G1)
Prop2 [i] = length (which (G2 > (100+j))) /length (G2)
Prop3 [i] = length (which (G3 > (100+j))) /length (G3)
Score [j] = 100 + j
}
}
sim <- data.frame (cbind (Prop1, Prop2, Prop3, Score))

对于 j 的每次迭代,输出应该是一个包含三个变量 1000 的数据帧。相反,我得到了 J 的 50 次迭代,然后是很多 0。

您可以使用不同的索引 (k) 来保存计算。

nSims <- 1000
Prop1 <- numeric(nSims * 20) 
Prop2 <- numeric(nSims * 20) 
Prop3 <- numeric(nSims * 20)
Score <- NA
k <- 0

for(i in 1:nSims){
  for (j in 1:20){
    G1 <- rnorm (10000, 100, 10)
    G2 <- rnorm (10000, 100 - i/50, 10)
    G3 <- rnorm (10000, 100 + i/50, 10)
    k <- k + 1
    Prop1 [k] = length (which (G1 > (100+j))) /length (G1)
    Prop2 [k] = length (which (G2 > (100+j))) /length (G2)
    Prop3 [k] = length (which (G3 > (100+j))) /length (G3)
    Score [k] = 100 + j
  }
}
sim <- data.frame (Prop1, Prop2, Prop3, Score)

nrow(sim)
#[1] 20000