在R中嵌套while循环行为

0 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
 }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

[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
Run Code Online (Sandbox Code Playgroud)

但我期待的是一些东西

[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
...
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢您的帮助.

Ber*_*ron 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
 }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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