我想知道R中的“while”循环和“repeat”循环除了语法之外有什么区别。在决定使用哪一个时,是否有我应该留意的特定情况?(例如,区别是否类似于为函数使用“for”循环与apply循环?)从我对文档的阅读来看,我更喜欢while循环,因为break条件就在“while”命令旁边,尽管我猜“repeat”循环似乎更灵活一些。最好的,本
oyjwcjzk1#
命令的语法可以在?Control中看到:
?Control
while(cond) expr repeat expr
这清楚地表明,while测试一个条件来确定何时完成循环,但repeat要求您自己显式地break循环,并且可以在循环体中的任何点。根据您放置break语句的位置,与while相比,repeat可能会执行迭代的更多部分。考虑这两种形式的同一个循环:
while
repeat
break
i <- 0 repeat { if (i == 2) break print(i) i <- i + 1 } # [1] 0 # [1] 1 i # [1] 2 i <- 0 while (i != 2) { print(i) i <- i + 1 } # [1] 0 # [1] 1 i # [1] 2
ubof19bj2#
在不特定于R的上下文中,repeat循环在每次迭代结束时检查条件,而while循环在每次迭代开始时检查条件。因此,repeat循环至少执行一次迭代,而如果条件不满足,while循环可能不会执行任何迭代。这就是区别
R
fivyi3re3#
Repeat循环Repeat循环反复执行相同的代码,直到满足停止条件。这意味着在重复循环中,停止条件存在于循环内部。例如:
v <- c("Hello","loop") cnt <- 2 repeat { print(v) cnt <- cnt+1 if(cnt > 5) { break } }
输出是
[1] "Hello" "loop" [1] "Hello" "loop" [1] "Hello" "loop" [1] "Hello" "loop"
在上面的例子中,停止条件,即; if(cnt > 5){break}存在于repeat循环本身内部。
if(cnt > 5){break}
While循环While循环反复执行相同的代码,直到满足停止条件。举例来说:
v <- c("Hello","while loop") cnt <- 2 while (cnt < 7) { print(v) cnt = cnt + 1 }
[1] "Hello" "while loop" [1] "Hello" "while loop" [1] "Hello" "while loop" [1] "Hello" "while loop" [1] "Hello" "while loop
在while循环中,如果满足条件,则进入循环并执行代码。但在repeat循环中,它会重复执行块内的代码,直到满足停止条件。
stszievb4#
我认为你的问题已经有了所有的答案。我喜欢在只有一个条件并希望提前看到它时使用while。另一方面,我发现repeat在满足沿着代码的多个条件时更加灵活。此外,使用repeat,当条件不再适用时,您可以将中断放在那里。在下面的例子中,我提出了两个条件。当i达到5时,或者当1到10之间的随机数乘以i大于20时,执行将停止。
i
i <- 0 repeat{ if(i == 5) break print("first text") i <- i + 1 j <- sample(1:10,1)*i if (j > 20) break print("second text") }
4条答案
按热度按时间oyjwcjzk1#
命令的语法可以在
?Control
中看到:这清楚地表明,
while
测试一个条件来确定何时完成循环,但repeat
要求您自己显式地break
循环,并且可以在循环体中的任何点。根据您放置break
语句的位置,与while
相比,repeat
可能会执行迭代的更多部分。考虑这两种形式的同一个循环:
ubof19bj2#
在不特定于
R
的上下文中,repeat
循环在每次迭代结束时检查条件,而while
循环在每次迭代开始时检查条件。因此,repeat
循环至少执行一次迭代,而如果条件不满足,while
循环可能不会执行任何迭代。这就是区别fivyi3re3#
Repeat循环Repeat循环反复执行相同的代码,直到满足停止条件。这意味着在重复循环中,停止条件存在于循环内部。例如:
输出是
在上面的例子中,停止条件,即;
if(cnt > 5){break}
存在于repeat循环本身内部。While循环While循环反复执行相同的代码,直到满足停止条件。举例来说:
输出是
在while循环中,如果满足条件,则进入循环并执行代码。但在repeat循环中,它会重复执行块内的代码,直到满足停止条件。
stszievb4#
我认为你的问题已经有了所有的答案。我喜欢在只有一个条件并希望提前看到它时使用
while
。另一方面,我发现repeat
在满足沿着代码的多个条件时更加灵活。此外,使用repeat
,当条件不再适用时,您可以将中断放在那里。在下面的例子中,我提出了两个条件。当i
达到5时,或者当1到10之间的随机数乘以i
大于20时,执行将停止。