/ / Do while loop in R - r, loop, while-loop

Fai un ciclo in R - r, loop, while-loop

Ho un programma in R in cui sto usando do while loop nel seguente formato

for(i in 1:n)
{
repeat
{
#code
if(condition){break}
}
}

Ho un problema anche se la condizione in istruzione if è vera il ciclo è stato eseguito ancora. Nessuno mi può aiutare con questo

Grazie

risposte:

1 per risposta № 1

Sei assolutamente sicuro che la condizione sta dicendo quello che pensi che sia?

Inoltre, la pausa ti porta fuori dall'istruzione "repeat", sarai ancora all'interno del ciclo.


1 per risposta № 2

La struttura del tuo codice è un po 'strana ... perché hai il for loop se non vuoi passarci sopra?

Nel tuo codice i sarà assegnato 1 poi il repeat il ciclo inizierà finché la condizione non sarà soddisfatta e tu break fuori di esso. Poi i sarà assegnato 2 e il repeat il loop verrà rieseguito, ecc.

Se vuoi il break uscire dal for loop che significa che non hai bisogno del for loop a tutti!

Ad ogni modo, il modo per farlo sarebbe:

flag = 0
for(i in 1:n)
{
if (flag == 1)
break;

repeat
{
#code
if (condition)
{
flag <- 1
break
}
}
}

Anche se questo non avrebbe senso se non si hanno diverse condizioni per uscire dal repeat loop, alcuni dei quali non impostati flag<-1


0 per risposta № 3

Non ho esperienza nella tua lingua, ma è cosìmi sembra che tu stia usando il ciclo annidato uno è per il ciclo, un altro è ripetuto per il loop. Se è così allora il mio suggerimento è Puoi usare il ciclo con l'istruzione break. Se vuoi veramente usare entrambi i loop, devi usare l'istruzione goto per uscire dal ciclo for.

for(i in 1:n)
{
#code
if(condition){break}

}

repeat
{
#code
if(condition){break}
}

Puoi anche usare

for(i in 1:n)
{
repeat
{
#code
if(condition){goto label;}
}
}

label:

Si prega di guardare la sintassi della dichiarazione goto della propria lingua, non so se la vostra lingua supporta o meno la dichiarazione goto, ma potete gestirla in questo modo.

Grazie


0 per risposta № 4

Sei sicuro di aver bisogno di entrambe le strutture di controllo qui sotto?

for(i in 1:n)

e

if(condition){break}

Il secondo di questi potrebbe essere facilmente sostituito con un comando while (). È possibile includere sia la condizione if che la condizione i <= n all'interno del ciclo while.