studio - R: Break for loop
ifelse r (2)
¿Puedes confirmar si el próximo salto cancela el ciclo interno 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,])
}
}
}
Bueno, su código no es reproducible, así que nunca lo sabremos con certeza, pero esto es lo que help(''break'')
dice:
break breaks de un ciclo for, while o repeat; el control se transfiere a la primera instrucción fuera del ciclo más interno.
Entonces sí, break
solo rompe el ciclo actual. También puedes verlo en acción con, por ejemplo:
for (i in 1:10)
{
for (j in 1:10)
{
for (k in 1:10)
{
cat(i," ",j," ",k,"/n")
if (k ==5) break
}
}
}
su declaración de interrupción debería salir del for (in in 1:n)
.
Personalmente, siempre soy cauteloso con las declaraciones de interrupción y lo comprobo doble imprimiendo en la consola para verificar que estoy saliendo del lazo correcto. Antes de realizar la prueba, agregue la siguiente declaración, que le permitirá saber si se rompe antes de que llegue al final. Sin embargo, no tengo idea de cómo manejas la variable n
así que no sé si sería útil para ti. Haga un n
valor de prueba donde sepa de antemano si se supone que se debe o no antes de llegar a 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,])
}
}