Jak globalnie pomijać ostrzeżenia w skrypcie języka R.

174

Mam długi skrypt R, który generuje ostrzeżenia, które mogę zignorować. mógłbym użyć

suppressWarnings(expr)

dla pojedynczych wypowiedzi. Ale jak mogę globalnie wyłączyć ostrzeżenia w języku R? Czy jest na to jakaś opcja?

Richard
źródło

Odpowiedzi:

228

Możesz użyć

options(warn=-1)

Pamiętaj jednak, że globalne wyłączenie komunikatów ostrzegawczych może nie być dobrym pomysłem.

Aby ponownie włączyć ostrzeżenia, użyj

options(warn=0)

(lub cokolwiek domyślnego warn, zobacz tę odpowiedź )

sieste
źródło
5
To działa, ale podejście Francesco Napolitano z 22 września 2015 r. Jest metodą bezpieczniejszą i bardziej globalną.
Andy Clifton
Zgadzam się z @Andy, a jego odpowiedź powinna być oznaczona jako zaakceptowana.
JASC
106

Chcesz options(warn=-1). Należy jednak pamiętać, że warn=0nie jest to najbezpieczniejszy poziom ostrzegawczy i nie należy go traktować jako aktualnego, szczególnie w przypadku skryptów lub funkcji. Dlatego najbezpieczniejszym sposobem tymczasowego wyłączenia ostrzeżeń jest:

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

[your "silenced" code]

options(warn = oldw)
Francesco Napolitano
źródło
41

Zamieniłem teraz printfwywołania na wywołania warningw kodzie C. Będzie skuteczny w wersji 2.17.2, która powinna być dostępna jutro wieczorem. Wtedy powinieneś być w stanie uniknąć ostrzeżeń za pomocą suppressWarnings()lub którejkolwiek z innych wyżej wymienionych metod.

suppressWarnings({ your code })
Bernd Fischer
źródło
6
to jest właściwy sposób, aby to zrobić. Powinien zostać oznaczony jako odpowiedź.
Denis
8

Spójrz ?optionsi użyj warn:

options( warn = -1 )
Simon O'Hanlon
źródło