R中的重复循环与?

12 r

我想知道除了语法之外,R中的"while"循环与"repeat"循环之间的区别是什么.在决定使用哪一个时,是否应该留意哪些具体情况?(例如,与使用"for"循环的函数与apply循环相似的区别是什么?)

从我对文档的阅读中,我更喜欢while循环,因为break条件就在"while"命令旁边,尽管我猜"重复"循环似乎更灵活一些.

最好,本

Jam*_*mes 13

命令的语法可以在以下位置看到?Control:

while(cond) expr
repeat expr
Run Code Online (Sandbox Code Playgroud)

这清楚地表明,while测试条件以确定何时完成循环,但repeat需要您自己显式break循环,并且可以在循环体中的任何位置.根据您放置break语句的位置,repeat可以执行迭代的其他部分while.

考虑同一循环的这两种形式:

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


Ric*_*rdy 5

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

  • 这在R中不一定正确."重复"是"手动"退出的,并且可以在循环体中的任何点 - 甚至在任何实质性处理发生之前. (3认同)
  • 实际上需要它们是R中罕见的例外. (2认同)
  • 此外,最后没有明确的条件检查。`repeat` 必须手动退出。 (2认同)
  • 不太清楚为什么这个答案有这么多的赞成.它无法识别高级别(实现级别)的"while"和"repeat"循环之间的差异.评论确实收到了一些松散的结果,但下面@James提供的答案要清楚得多. (2认同)