R:打破循环

你能否确认下一次rest是否取消了内循环?

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,]) } } } 

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

break,break或者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 } } } 

你的break语句应该跳出for (in in 1:n)

就我个人而言,我总是警惕打破陈述,并通过打印到控制台仔细检查,以确保我实际上正在摆脱正确的循环。 所以在testing之前添加下面的语句,它会让你知道如果你在结束之前破坏它。 但是,我不知道你是如何处理variablesn所以我不知道它是否会对你有帮助。 如果在到达n之前应该发生爆发,在你知道的地方做一些testing值。

 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,]) } }