在R中嵌套while循环行为

时间:2010-09-12 15:08:27

标签: r while-loop

我很困惑为什么输出不是我在以下嵌套while循环中所期望的:

i = 1
j = 1
while(i<5){
 print("i")
 print(i)
 i = i + 1
 while(j<5){
  print("j")
  print(j)
  j = j + 1
 }
}

我得到的输出是:

[1] "i"
[1] 1
[1] "j"
[1] 1
[1] "j"
[1] 2
[1] "j"
[1] 3
[1] "j"
[1] 4
[1] "i"
[1] 2
[1] "i"
[1] 3
[1] "i"
[1] 4

但我期待的是

[1] "i"
[1] 1
[1] "j"
[1] 1
[1] "j"
[1] 2
[1] "j"
[1] 3
[1] "j"
[1] 4
[1] "i"
[1] 2
[1] "j"
[1] 1
[1] "j"
[1] 2
[1] "j"
[1] 3
[1] "j"
[1] 4
...

有什么建议吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

循环的行为没有错。

i = 1 // Beginning of your code, you're initializing i, changing its value to 1
j = 1 // ... initializing j as well.
while(i<5){   // looping while i < 5
 print("i")
 print(i)
 i = i + 1    // incrementing i
 while(j<5){  // looping while j is < 5
  print("j")
  print(j)
  j = j + 1   // incrementing j
 }
}

现在再考虑一下你的代码。

你想要的是你的第二个while循环为第一个循环实际循环4次。

所以你期望j的值在第一个while循环范围内被设置回1,神奇地?你可能想尝试自己做,不是吗?