R:打破循环

时间:2011-05-21 15:19:28

标签: r for-loop break

你能确认下一次休息是否取消内部for循环吗?

   for (out in 1:n_old){

     id_velho <- old_table_df$id[out]
      for (in in 1:n)
      {
       id_novo <- new_table_df$ID[in]
       if(id_velho==id_novo)
       {
        break
       }else 
       if(in == n)
       {
       sold_df <- rbind(sold_df,old_table_df[out,])
       }
      }
    }

2 个答案:

答案 0 :(得分:87)

你的代码是不可重现的,所以我们永远不知道,但这是help('break')所说的:

  

打破了for,while或   重复循环;控制转移到   外面的第一个声明   最内层的循环。

所以是的,break只打破当前循环。您也可以通过例如:

查看它
for (i in 1:10)
{
    for (j in 1:10)
    {
        for (k in 1:10)
        {
            cat(i," ",j," ",k,"\n")
            if (k ==5) break
        }   
    }
}   

答案 1 :(得分:23)

你的break语句应该突破for (in in 1:n)

我个人总是对break语句保持警惕,并通过打印到控制台仔细检查它,以便仔细检查我实际上正在打破正确的循环。因此,在测试之前添加以下语句,如果您在结束之前中断,将告诉您。但是,我不知道你是如何处理变量n所以我不知道它是否对你有帮助。在n达到n之前,如果它应该突然爆发,请事先知道for (in in 1:n) { if (in == n) #add this statement { "sorry but the loop did not break" } id_novo <- new_table_df$ID[in] if(id_velho==id_novo) { break } else if(in == n) { sold_df <- rbind(sold_df,old_table_df[out,]) } } 某个测试值。

{{1}}