Подтвердить что ты не робот

Подавление сообщений в Knitr/Rmarkdown

Вот код для моего файла 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()
```

Несмотря на настройки message = FALSE, warnings = FALSE, я все еще получаю выходные сообщения в файле HTML при запуске getSymbols() и dev.off(). Их соответствующие выходы:

[1] "RUT"

и

null device 
          1 

Как я могу подавить эти сообщения?

4b9b3361

Ответ 1

Попробуйте использовать invisible для подавления этих типов вывода.

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

На странице справки для ?invisible:

Эта функция может быть полезна, когда требуется, чтобы функции возвращали значения, которые могут быть назначены, но которые не печатаются, когда они не назначены.

Ни один из них не является "сообщениями" или "предупреждениями", а действительными значениями вывода. Вы увидите, что сообщения для getSymbols, действительно, подавлены knitr на выходе.

Ответ 2

При использовании knitr вам не следует использовать dev.off(). Он заботится обо всех устройствах для создания графиков.

От автора пакета Yihui

God kills a kitten whenever you dev.off()

null device 
          1 

Выводится dev.off().

Возможно, что getSymbols возвращает то, что вы не определили env

Если вы хотите скрыть результаты (output) (в общем), вы можете использовать results = 'hide' в качестве опции. Нет необходимости обертывать что-либо в invisible()

Ответ 3

В эту проблему также входит, я хотел бы добавить, что это должно быть warning = FALSE, not warnings = FALSE