0

我有以下代码:

for(n in 1:1000){
    ..............
}

这将运行............1000 次。我没有输入完整的代码,因为它非常长并且与答案无关

我的问题是有什么方法可以让代码运行,直到它达到指定的收敛值到小数点后四位。有一些初始值被输入到这个方程中,这会产生新的值,并且这个过程会不断地迭代,直到达到收敛(如上所述)。

编辑

我的代码末尾有一组 4 个值,带有不同的标签(A、B、C、D)。在我的代码中,当每个函数计算不同的值并相互提供时,有两个单独的函数。因此,当我说收敛时,我的意思是当函数 1 告诉函数 2 特定值并计算 A、B、C 和 D 的新值并且循环继续并且下一次这些值与函数 2 计算的值相同时

我在这里问的关键问题是代码应该采用什么格式(下面建议重复是可取的)以及如何正确编码收敛标准,因为连续迭代的分配符号将是相同的。

4

3 回答 3

6

如果您只是在寻找一种退出for循环的方法,您可以使用break.

for (n in 1:1000)
    {
    ...
    if (condition)
       break;
    }
于 2012-09-02T17:33:34.147 回答
6

只是根据我的评论做出回答,我认为这通常repeat是最好的。它不需要您在开始时评估条件,并且在有限次数的迭代后不会停止(当然,除非这是您想要的):

repeat
{
 # Do stuff
 if (condition) break
}
于 2012-09-02T18:09:20.783 回答
5

如果您不知道需要多少次迭代,您总是可以只使用一个 while 循环。一般形式可能如下所示:

while(insert_convergence_check_here){
     insert_your_code_here
}

编辑:作为对 nico 评论的回应,我应该补充一点,您也可以按照这种模式基本上创建一个 do/while 循环,以防您需要循环至少运行一次才能检查收敛标准。

continue_indicator <- TRUE
while(continue_indicator){
    insert_your_code_here
    continue_indicator <- convergence_check_here
}
于 2012-09-02T17:34:12.487 回答