Як придушити попередження в усьому світі в сценарії R


174

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

suppressWarnings(expr)

за окремі заяви. Але як я можу придушити попередження в R глобально? Чи є варіант для цього?

Відповіді:


228

Ви можете використовувати

options(warn=-1)

Але зауважте, що вимкнення попереджувальних повідомлень у всьому світі може бути не дуже хорошою ідеєю.

Щоб увімкнути попередження, використовуйте

options(warn=0)

(або як би це було за замовчуванням warn, дивіться цю відповідь )


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
це правильний спосіб зробити це. Слід зазначити як відповідь.
Денис

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.