tryCatch в R: как перехватить все предупреждающие сообщения в функции, переданные параметру warning? - PullRequest
1 голос
/ 18 сентября 2019
some_f <- function() {
  warning("warning 1")
  warning("warning 2")
}

tryCatch(some_f(),
         warning=function(warn) warn)

Вывод:

<simpleWarning in some_f(): warning 1>

Мне нужно иметь возможность захватить оба предупреждения в функции, которую я передаю параметру "warning".

1 Ответ

1 голос
/ 19 сентября 2019

Это минимальный пример для перехвата нескольких предупреждений, вызванных вашей функцией f():

warns <- list()
withCallingHandlers(some_f(), warning = function(warn) {warns <<- append(warns, warn)})
warns

##  $message
##  [1] "warning 1"
##  
##  $call
##  some_f()
##  
##  $message
##  [1] "warning 2"
##  
##  $call
##  some_f()
...