Как подавить предупреждения глобально в R Script

174

У меня есть длинный R-скрипт, который выдает некоторые предупреждения, которые я могу игнорировать. Я мог бы использовать

suppressWarnings(expr)

для разовых заявлений. Но как я могу подавить предупреждения в R во всем мире? Есть ли вариант для этого?

Ричард
источник

Ответы:

229

Вы могли бы использовать

options(warn=-1)

Но учтите, что отключение предупреждающих сообщений во всем мире может быть не очень хорошей идеей.

Чтобы снова включить предупреждения, используйте

options(warn=0)

(или для чего по умолчанию warn, см. этот ответ )

Sieste
источник
5
Это работает, но подход Франческо Наполитано от 22 сентября 2015 года является более безопасным и более применимым в глобальном масштабе методом.
Энди Клифтон
Я согласен с @Andy, и его ответ должен быть помечен как принятый.
JASC
106

Вы хотите options(warn=-1). Однако обратите внимание, что warn=0это не самый безопасный уровень предупреждения, и его не следует считать текущим, особенно в сценариях или функциях. Таким образом, самый безопасный способ временного отключения предупреждений:

oldw <- getOption("warn")
options(warn = -1)

[your "silenced" code]

options(warn = oldw)
Франческо Наполитано
источник
41

Я заменил printfзвонки на звонки warningв C-коде сейчас. Он будет действовать в версии 2.17.2, которая должна быть доступна завтра вечером. Тогда вы сможете избежать предупреждений с помощью suppressWarnings()любого из вышеперечисленных методов.

suppressWarnings({ your code })
Бернд Фишер
источник
6
это правильный способ сделать это. Должен быть отмечен как ответ.
Денис
8

Посмотрите ?optionsи используйте warn:

options( warn = -1 )
Саймон О'Хэнлон
источник