Короче говоря, break
останавливает l oop в том месте, в котором вы его пишете, без запуска любого из следующего кода. Вы можете проверить это, написав несколько простых утверждений и определив x
и y
. message
- это полезная функция, так как вы можете проверить, какая часть кода все еще выполняется.
x <- 1
y <- 1
while (x < 100){
if (x == 1){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
В этом примере первый запуск уже прерван, поскольку x == 1
истинно с самого начала. Вы заметите, что сообщение не печатается, но значение x
сейчас равно 2.
Во втором примере я составил утверждение, которое станет верным после нескольких итераций. Сообщения со значениями x
и y
теперь печатаются для каждой итерации, но после y > 10
ничего не печатается и l oop немедленно останавливается.
x <- 1
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
Разница break
по сравнению с stop
, например, это то, что он будет прерывать только самый внутренний l oop (и что stop
выводит сообщение об остановке / ошибке). Это означает, что если ваш код находится в другом l oop, то этот внешний l oop продолжится. Например:
for (x in 1:10) {
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
}