Come sopprimere gli avvisi a livello globale in uno script R


174

Ho una lunga sceneggiatura R che lancia alcuni avvertimenti, che posso ignorare. Potrei usare

suppressWarnings(expr)

per singole dichiarazioni. Ma come posso eliminare gli avvisi in R a livello globale? C'è un'opzione per questo?

Risposte:


229

Puoi usare

options(warn=-1)

Tuttavia, tenere presente che disattivare i messaggi di avviso a livello globale potrebbe non essere una buona idea.

Per riattivare gli avvisi, utilizzare

options(warn=0)

(o qualunque sia il tuo valore predefinito warn, vedi questa risposta )


5
Funziona, ma l'approccio di Francesco Napolitano del 22 settembre 2015 è il metodo più sicuro e applicabile a livello globale.
Andy Clifton,

Sono d'accordo con @Andy e la sua risposta dovrebbe essere contrassegnata come accettata.
JASC

106

Tu vuoi options(warn=-1). Tuttavia, si noti che warn=0non è il livello di avviso più sicuro e non dovrebbe essere assunto come quello corrente, in particolare all'interno di script o funzioni. Pertanto, il modo più sicuro per disattivare temporaneamente gli avvisi è:

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

[your "silenced" code]

options(warn = oldw)

41

Ho sostituito le printfchiamate con le chiamate a warningnel codice C ora. Sarà efficace nella versione 2.17.2 che dovrebbe essere disponibile domani sera. Quindi dovresti essere in grado di evitare gli avvisi con suppressWarnings()o uno qualsiasi degli altri metodi sopra menzionati.

suppressWarnings({ your code })

6
questo è il modo corretto di farlo. Dovrebbe essere contrassegnato come risposta.
Denis

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.