你能确认下一个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,])
}
}
}发布于 2011-05-21 23:28:38
嗯,你的代码是不可重现的,所以我们永远不会确定,但这是help('break')所说的:
break会中断for、while或repeat循环;控制权将转移到最内层循环之外的第一个语句。
所以,是的,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
}
}
}发布于 2011-05-21 23:38:43
您的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,])
}
}https://stackoverflow.com/questions/6082655
复制相似问题