So unterdrücken Sie Warnungen global in einem R-Skript

174

Ich habe ein langes R-Skript, das einige Warnungen auslöst, die ich ignorieren kann. ich könnte benutzen

suppressWarnings(expr)

für einzelne Aussagen. Aber wie kann ich Warnungen in R global unterdrücken? Gibt es dafür eine Option?

Richard
quelle

Antworten:

228

Du könntest benutzen

options(warn=-1)

Beachten Sie jedoch, dass das globale Deaktivieren von Warnmeldungen möglicherweise keine gute Idee ist.

Verwenden Sie, um Warnungen wieder einzuschalten

options(warn=0)

(oder was auch immer Ihre Standardeinstellung ist warn, siehe diese Antwort )

sieste
quelle
5
Dies funktioniert, aber der Ansatz von Francesco Napolitano vom 22. September 2015 ist die sicherere und global anwendbare Methode.
Andy Clifton
Ich stimme @Andy zu und seine Antwort sollte als akzeptiert markiert werden.
JASC
104

Du willst options(warn=-1). Beachten Sie jedoch, dass dies warn=0nicht die sicherste Warnstufe ist und nicht als die aktuelle angenommen werden sollte, insbesondere innerhalb von Skripten oder Funktionen. Der sicherste Weg, um Warnungen vorübergehend auszuschalten, ist daher:

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

[your "silenced" code]

options(warn = oldw)
Francesco Napolitano
quelle
41

Ich habe die printfAnrufe jetzt durch Anrufe warningim C-Code ersetzt. Es wird in der Version 2.17.2 wirksam, die morgen Abend verfügbar sein sollte. Dann sollten Sie in der Lage sein, die Warnungen mit suppressWarnings()oder einer der anderen oben genannten Methoden zu vermeiden .

suppressWarnings({ your code })
Bernd Fischer
quelle
6
Dies ist der richtige Weg, um es zu tun. Sollte als Antwort markiert werden.
Denis
8

Schauen Sie sich an ?optionsund verwenden Sie warn:

options( warn = -1 )
Simon O'Hanlon
quelle