2013-03-14 28 views
22

Oto kod dla mojego pliku RMarkdown:komunikatami w 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() 
``` 

Pomimo ustawienia message = FALSE, warnings = FALSE, ja wciąż otrzymuję komunikaty wyjściowe w pliku HTML, gdy biegnę getSymbols() i dev.off(). Ich odpowiednie wyjścia są:

[1] "RUT" 

i

null device 
      1 

Jak tłumić te wiadomości?

+0

Ten odpowiedział mój problem z błędem, że nie będzie tłumione http: //stackoverflow.com/questions/24978427/suppressing-error-messages-in-knitr – user2673238

Odpowiedz

15

Spróbuj użyć polecenia invisible, aby wyłączyć te typy danych wyjściowych.

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

Od strony pomocy dla ?invisible:

Funkcja ta może być przydatna, gdy pożądane jest, aby mieć funkcje zwracają wartości, które mogą być przypisane, ale które nie są drukowane, gdy nie są one przypisane.

Żadne z nich nie jest "komunikatem" lub "ostrzeżeniem", ale rzeczywistymi wartościami wyjściowymi. Zobaczysz, że wartości dla są w rzeczywistości tłumione przez knitr na wyjściu.

+2

Nadal szukam sposobu, aby wyłączyć ostrzeżenia dla połączeń ggplot. Zawijanie wywołania ggplot do niewidzialnego również tłumi obraz, co jest trochę przeciwne do zamierzonego. :) –

+0

Witam, mam ten sam problem z używaniem "ksvm". Niestety "niewidzialny" nie działa. – CodingButStillAlive

35

Nigdy nie powinieneś używać dev.off() podczas korzystania z knitr. Dba o to, aby wszystkie urządzenia tworzyły wątki.

Od autora pakietu Yihui

God kills a kitten whenever you dev.off()

null device 
      1 

jest wyjście dev.off().

Być może getSymbols powraca czymś danym, które nie zostały zdefiniowane env

Jeśli chcesz ukryć wyniki (output) (w ogóle) można użyć results = 'hide' jako opcja. Nie ma potrzeby, aby zawinąć coś w invisible()

+0

+1 Nie znałem tej informacji o 'dev.off()' i knitr. Dzięki! – A5C1D2H2I1M1N2O1R2T1

+16

proszę zamieścić mój plakat z kociakiem, gdy zobaczysz 'dev.off()': http://yihui.name/en/2012/06/enjoyable-reproducible-research/ –

+2

@yihui - Szukałem tego kociaka plakat (bez sukcesu). Zawarłem to teraz. – mnel

25

wpadł na ten problem, a także, chciałbym dodać, że powinna ona być warning = FALSE, nie warnings = FALSE

Powiązane problemy