在R中使用for循环的收敛

时间:2012-09-02 17:28:35

标签: r

我有以下代码:

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

这将运行............ 1000次。我没有把完整的代码放进去,因为它非常长而与答案无关

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

修改

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

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

3 个答案:

答案 0 :(得分:6)

如果您只想找到退出for循环的方法,可以使用break

for (n in 1:1000)
    {
    ...
    if (condition)
       break;
    }

答案 1 :(得分:6)

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

repeat
{
 # Do stuff
 if (condition) break
}

答案 2 :(得分: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
}