В R непосредственно перейти к следующей итерации цикла for, если в текущей есть ошибка - PullRequest
0 голосов
/ 16 мая 2019

Я запускаю цикл $ for $ в $ R $ .Есть около миллиона итераций.Так получилось, что некоторые итерации приводят к ошибке.Ошибка может быть разной для разных итераций.Вопрос заключается в следующем: как пропустить итерацию, если в ней есть ошибка, без проверки конкретного условия (что обычно делается для выхода из цикла for) .... т.е. здесь условие для выхода из текущей итерации состоит в том, что итерацияесть ошибка.Я просто хочу пропустить ошибочную итерацию и перейти к следующей итерации.

Что-то вроде:

if error:
  output = 0
  skip to next iteration

1 Ответ

0 голосов
/ 16 мая 2019

Вы, вероятно, ищете try или tryCatch. Например, возведение в квадрат значений в простом списке целых чисел и символов:

vec <- list(1, 2, 3, "c", 4, 5, 6)

Используйте try, чтобы просто продолжить при обнаружении ошибки:


for (x in vec) {
    try(print(x^2), silent = T)
}

# [1] 1
# [1] 4
# [1] 9
# [1] 16
# [1] 25
# [1] 36

Используйте tryCatch, чтобы напечатать конкретное сообщение и т. Д.: * 10101 *

for (x in vec) {
    tryCatch(print(x^2),
             error = function(cond) message(paste(x, "is not a number"))
             )
}

# [1] 1
# [1] 4
# [1] 9
# c is not a number
# [1] 16
# [1] 25
# [1] 36
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...