ваш код не работает, потому что for
сначала проверяет, сколько прогонов он должен выполнить. После изменения repscount
функция for
никогда больше не проверяет количество итераций, которое она должна выполнить. Этот простой пример показывает, что:
n <- 5
for (i in 1:n) {
print(i)
n <- n + 1
}
Итак, сначала оценивается условие внутри for
. R знает, что он сделает ровно пять итераций, и делает это. Тот факт, что n изменяется впоследствии, не влияет на это.
Вместо него можно использовать while
l oop:
repscount <- value
i <- 1
while (i <= repscount) {
##certain calculations on x
if (x == 0) {repscount <- repscount + 1} else {}##add x to a list
i <- i + 1
}
Здесь, после окончания каждого прогона repscount
сравнивается с i
, итерация начинается с начала, только если i <= repscount
.