R 中的嵌套 while 循环行为

问题描述 投票:0回答:2

我很困惑为什么在下面的嵌套 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
...

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

r while-loop
2个回答
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,神奇吗?您可能想尝试自己做,不是吗?


0
投票

将 j 放入循环中,为每个 i 重复所有 j...

    i = 1
while(i<5){
 print("i")
 print(i)
 i = i + 1
    j = 1
    while(j<5){
    print("j")
    print(j)
    j = j + 1
    }
 }
© www.soinside.com 2019 - 2024. All rights reserved.