我有以下代码:
for(n in 1:1000){
..............
}
这将运行............
1000次。我没有把完整的代码放进去,因为它非常长而与答案无关
我的问题是,有什么方法可以让代码运行,直到达到指定的收敛值到四位小数。有一些初始值被输入到这个方程中,它产生新的值,并且该过程不断迭代,直到达到收敛(如上所述)。
修改
我的代码末尾有一组4个值,带有不同的标签(A,B,C,D)。在我的代码中,当每个函数计算不同的值并相互馈送时,有两个单独的函数。因此,当我说收敛时,我的意思是当函数1告诉函数2特定值并且它计算A,B,C和D的新值时,循环继续,并且下一次这些值与函数2计算的相同< / p>
这里要问的关键问题是代码应该采用什么格式(下面将建议重复是可以实现的)以及如何正确编码收敛标准,因为连续迭代的赋值符号将是相同的。
答案 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
}