@flodel hat die richtige Antwort dafür, das break
anstatt next
zu verwenden ist. Leider würde das Beispiel in dieser Antwort das gleiche Ergebnis liefern, egal welches Kontrollfluss-Konstrukt verwendet wurde.
Ich füge das folgende Beispiel nur um zu verdeutlichen, wie sich das Verhalten der beiden Konstrukte unterscheidet.
## Using `break`
for (i in 1:3) {
for (j in 3:1) { ## j is iterated in descending order
if ((i+j) > 4) {
break ## << Only line that differs
} else {
cat(sprintf("i=%d, j=%d\n", i, j))
}}}
# i=1, j=3
# i=1, j=2
# i=1, j=1
## Using `next`
for (i in 1:3) {
for (j in 3:1) { ## j is iterated in descending order
if ((i+j) > 4) {
next ## << Only line that differs
} else {
cat(sprintf("i=%d, j=%d\n", i, j))
}}}
# i=1, j=3
# i=1, j=2
# i=1, j=1
# i=2, j=2 ## << Here is where the results differ
# i=2, j=1 ##
# i=3, j=1 ##
Siehe auch: '' next' und break', aber hier würde ich eher eine innere Schleife wie: 'for (j in 1000: 970) {...}' – daroczig