2013-03-14 6 views
22

Hier ist der Code für meine RMarkdown Datei:Unterdrückung von Nachrichten in Knitr/Rmarkdown

```{r echo=FALSE, message=FALSE} 
opts_chunk$set(comment = NA, echo=FALSE, message = FALSE, warnings = FALSE) 
options("getSymbols.warning4.0"=FALSE) 
Sys.setenv(TZ = "GMT") 
library(quantmod) 
library(xtable) 
library(PerformanceAnalytics) 
``` 

```{r} 
getSymbols("^RUT") 
chart.TimeSeries(RUT) 
dev.off() 
``` 

Trotz Einstellungen message = FALSE, warnings = FALSE, ich bin immer noch Ausgabenachrichten in der HTML-Datei bekommen, wenn ich getSymbols() und dev.off() laufen. Ihre jeweiligen Ausgänge sind:

[1] "RUT" 

und

null device 
      1 

Wie unterdrücke ich diese Nachrichten?

+0

Das ist mein Problem mit einem Fehler beantwortet, nicht http unterdrückt werden würde: //stackoverflow.com/questions/24978427/suppressing-error-messages-in-knitr – user2673238

Antwort

15

Verwenden Sie invisible, um diese Ausgabetypen zu unterdrücken.

```{r} 
invisible(getSymbols("^RUT")) 
chart.TimeSeries(RUT) 
invisible(dev.off()) 
``` 

Von der Hilfeseite für ?invisible:

Diese Funktion kann nützlich sein, wenn es gewünscht ist, Funktionen zu haben Werte zurückgeben, die zugeordnet werden können, die aber nicht gedruckt werden, wenn sie nicht zugeordnet sind.

Keine davon sind "Nachrichten" oder "Warnungen", sondern tatsächliche Ausgabewerte. Sie werden sehen, dass die Nachrichten für getSymbols tatsächlich durch knitr in der Ausgabe unterdrückt werden.

+2

Suche immer noch nach einer Möglichkeit, Warnungen für ggplot Aufrufe zu unterdrücken. Wenn man den ggplot-Aufruf unsichtbar einhüllt, unterdrückt man auch das Bild, was kontraproduktiv ist. :) –

+0

Hallo, ich habe das gleiche Problem mit der Verwendung von "ksvm". Leider funktioniert "unsichtbar" nicht. – CodingButStillAlive

35

Sie sollten niemals dev.off() verwenden, wenn Sie knitr verwenden. Es kümmert sich um alle Geräte, um Plots zu erstellen.

Aus dem Paketautor Yihui

God kills a kitten whenever you dev.off()

null device 
      1 

Ist die Ausgabe von dev.off().

Es kann sein, dass getSymbols kehrt etwas gegeben, dass Sie nicht env

definiert haben Wenn Sie die Ergebnisse (output) (im Allgemeinen) ausblenden möchten Sie results = 'hide' als Option verwenden können. Keine Notwendigkeit zu wickeln alles in invisible()

+0

+1 Ich kannte diesen Leckerbissen von Informationen über 'dev.off()' und knitr nicht. Vielen Dank! – A5C1D2H2I1M1N2O1R2T1

+16

Bitte schließen Sie mein Kätzchen Poster, wenn Sie sehen, dev.off() ': http://yihui.name/en/2012/06/enjoyable-reproducible-research/ –

+2

@yihui - Ich war auf der Suche nach diesem Kätzchen Poster (ohne Erfolg). Ich habe es jetzt aufgenommen. – mnel

25

Ran in dieses Problem auch, ich mag hinzufügen, dass es sein sollte warning = FALSE, nicht warnings = FALSE