你能确认下一次突破是否取消内部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,])
}
}
}
Run Code Online (Sandbox Code Playgroud)
Sac*_*amp 91
那么你的代码是不可重现的,所以我们永远不知道,但这help('break')
就是说:
中断,重复循环,重复循环; 控制转移到最内层循环之外的第一个语句.
所以是的,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
}
}
}
Run Code Online (Sandbox Code Playgroud)
msi*_*d65 23
你的休息声明应该突破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,])
}
}
Run Code Online (Sandbox Code Playgroud)