While与repeat循环在R中的比较

sgtfey8w  于 2023-10-13  发布在  其他
关注(0)|答案(4)|浏览(121)

我想知道R中的“while”循环和“repeat”循环除了语法之外有什么区别。在决定使用哪一个时,是否有我应该留意的特定情况?(例如,区别是否类似于为函数使用“for”循环与apply循环?)
从我对文档的阅读来看,我更喜欢while循环,因为break条件就在“while”命令旁边,尽管我猜“repeat”循环似乎更灵活一些。
最好的,本

oyjwcjzk

oyjwcjzk1#

命令的语法可以在?Control中看到:

while(cond) expr
repeat expr

这清楚地表明,while测试一个条件来确定何时完成循环,但repeat要求您自己显式地break循环,并且可以在循环体中的任何点。根据您放置break语句的位置,与while相比,repeat可能会执行迭代的更多部分。
考虑这两种形式的同一个循环:

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
ubof19bj

ubof19bj2#

在不特定于R的上下文中,repeat循环在每次迭代结束时检查条件,而while循环在每次迭代开始时检查条件。因此,repeat循环至少执行一次迭代,而如果条件不满足,while循环可能不会执行任何迭代。这就是区别

fivyi3re

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循环本身内部。

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循环中,它会重复执行块内的代码,直到满足停止条件。

stszievb

stszievb4#

我认为你的问题已经有了所有的答案。我喜欢在只有一个条件并希望提前看到它时使用while。另一方面,我发现repeat在满足沿着代码的多个条件时更加灵活。此外,使用repeat,当条件不再适用时,您可以将中断放在那里。在下面的例子中,我提出了两个条件。当i达到5时,或者当1到10之间的随机数乘以i大于20时,执行将停止。

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")

}

相关问题