207 votes

Comment supprimer les avertissements de manière globale dans un script R

J'ai un long script de R qui lance quelques avertissements, que je peux ignorer. Je pourrais utiliser

suppressWarnings(expr)

pour les déclarations uniques. Mais comment puis-je supprimer les avertissements dans R de manière globale ? Existe-t-il une option pour cela ?

262voto

sieste Points 4382

Vous pourriez utiliser

options(warn=-1)

Mais notez que désactiver les messages d'avertissement de manière globale n'est pas forcément une bonne idée.

Pour réactiver les avertissements, utilisez

options(warn=0)

(ou quel que soit votre défaut pour warn voir cette réponse )

132voto

Ciccio Points 21

Vous voulez options(warn=-1) . Cependant, notez que warn=0 n'est pas le niveau d'avertissement le plus sûr et il ne doit pas être supposé comme étant le niveau actuel, particulièrement à l'intérieur des scripts ou des fonctions. Ainsi, la manière la plus sûre de désactiver temporairement les avertissements est :

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

[your "silenced" code]

options(warn = oldw)

62voto

Bernd Fischer Points 641

J'ai remplacé le printf avec des appels à warning dans le code C maintenant. Elle sera effective dans la version 2.17.2 qui devrait être disponible demain soir. Vous devriez alors être en mesure d'éviter les avertissements avec suppressWarnings() ou l'une des autres méthodes mentionnées ci-dessus.

suppressWarnings({ your code })

8voto

Simon O'Hanlon Points 27680

Jetez un coup d'œil à ?options et utiliser warn :

options( warn = -1 )

3voto

Cedric Points 61

Comme discuté dans d'autres réponses, vous voulez probablement définir options(warn = -1) et revenir à l'ancien comportement. Le site withr vous permet de définir une valeur d'option et de revenir automatiquement à l'ancien comportement.

# install.packages("withr")

withr::with_options(.new = list(warn = -1),
                    {code})

Alternativement, le local_* ont le même effet jusqu'à la fin de la fonction dans laquelle ils sont inclus.

function() {
  withr::local_options(.new = list(warn = -1)

  { code }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X