функции tryCatch. Возможно, кто-нибудь сталкивался?
Бывают такие ошибки, когда R в дополнение к ошибке (error) генерирует также предупреждение (warning), например, сохранение файла в несуществующую директорию:
> write.csv(1, file = "c:/non_existing_path/1.csv)
Error in file(file, ifelse(append, "a", "w")) :
cannot open the connection
In addiction: Warning message:
cannot open file 'c:/non_existing_path/1.csv': No such file or directory
Однако, когда я в tryCatch определяю обработчики событий и для ошибок, и для предупреждений, всегда отрабатывает только один из них, а именно обработчик для предупреждений:
> tryCatch(
{
write.csv(1, file = "c:/non_existing_path/1.csv)
}, error = function(e) ERR <<- e, warning = function(w) WRN <<- w)
> WRN
<simpleWarning in file(file, ifelse(append, "a", "w")): cannot open file 'c:/non_existing_path/1.csv': No such file or directory>
> ERR
Error: object 'ERR' not found
При этом, неважно, какой из аргументов error или warning функции tryCatch определять первым, всегда отрабатывает именно обработчик предупреждения!
Что я делаю неправильно? Как можно выполнить оба обработчика? Спасибо!
На самом деле в вашем случае сначала генерируется warning, потом он перехватвывается, а до генерации ошибки код в write.csv даже не доходит. Можете сравнить: tryCatch( { warning("Warning") stop("Error") }, warning = function(w) WRN «- w, error = function(e) ERR «- e ) rm(ERR, WRN) tryCatch( { stop("Error") warning("Warning") }, warning = function(w) WRN «- w, error = function(e) ERR «- e )
Обсуждают сегодня