Использование tryCatch для записи неудачной i-й итерации - PullRequest
0 голосов
/ 12 июня 2018
ith.error <- NULL

bar <- function(i){
  ith.error <<- append(ith.error,i)
return(ith.error)
}

for(i in c(2,3,5,"p",6)){
  tryCatch(

    {cat(log(i),"\n")}, 

    error=function(e){bar()}   #**

  )

}

пытался записать любую неудачную i-ю итерацию в цикле for с использованием tryCatch, вывод ith.error должен быть равен 4 (в векторном формате, позиция индекса заданного ввода)

** перепробовал много версий по этой конкретной строке:

ith.error[i] <- i  #version 1 doesn't work
h = bar(i)         #version 2 didn't work too

1 Ответ

0 голосов
/ 12 июня 2018

Вы забыли ввести i в функцию bar.Также учтите, что c(2,3,5,"p",6) - это вектор character, и вы не можете применить log ни к одному из его элементов.Используйте list вместо.

ith.error <- NULL

bar <- function(i){
  ith.error <<- append(ith.error,i)
return(ith.error)
}

for(i in list(2,3,5,"p",6)){
  tryCatch(

    {cat(log(i),"\n")},     
    error=function(e){bar(i)}   #**

  )

}
ith.error
#[1] "p"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...