首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: Break for循环

R: Break for循环
EN

Stack Overflow用户
提问于 2011-05-21 23:19:28
回答 2查看 253.6K关注 0票数 63

你能确认下一个break是否会取消内部for循环吗?

代码语言:javascript
复制
   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,])
       }
      }
    }
EN

回答 2

Stack Overflow用户

发布于 2011-05-21 23:28:38

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

break会中断for、while或repeat循环;控制权将转移到最内层循环之外的第一个语句。

所以,是的,break只中断了当前循环。您还可以使用以下命令查看它的实际效果:

代码语言:javascript
复制
for (i in 1:10)
{
    for (j in 1:10)
    {
        for (k in 1:10)
        {
            cat(i," ",j," ",k,"\n")
            if (k ==5) break
        }   
    }
}
票数 97
EN

Stack Overflow用户

发布于 2011-05-21 23:38:43

您的break语句应该中断for (in in 1:n)

就我个人而言,我总是对break语句保持警惕,并通过打印到控制台来仔细检查它,以再次检查我是否真的脱离了正确的循环。因此,在测试之前添加以下语句,它将让您知道是否在到达末尾之前中断。但是,我不知道您是如何处理变量n的,所以我不知道它是否对您有帮助。在到达n之前预先知道它是否会爆发的情况下,对n进行一些测试值。

代码语言:javascript
复制
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,])
    }
}
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6082655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档