随着上周评估包 (v0.19) 的新版本发布, knitr中块选项message = FALSE
和warning = FALSE
的含义发生了变化。以前,它们意味着根本不会捕获消息和警告。通常消息会被发送到控制台。
这既令人困惑又不方便。当用户设置message = FALSE
时,更可能的意图是“我确定我不想从这个代码块的任何地方看到任何消息”,而不是“我不想在输出文档中看到消息但想要在控制台中查看它们”。
如果您更新了评估包, message = FALSE
将完全抑制消息,同样, warning = FALSE
将消除代码块中的所有警告。例如,这只会抑制包启动消息:
```{r, message=FALSE} library(dplyr) ```
您不再需要像这样在代码中使用suppressMessages()
或suppressWarnings()
等函数:
```{r, message=FALSE} suppressPackageStartupMessages(library(dplyr)) ```
我不确定是否有任何用户实际上更喜欢旧的行为。如果您确实需要控制台中的消息,请告诉我,我绝对可以提供一个选项来做到这一点。
PS 此更改背后的一个动机是使knitr的文本进度条更清晰。使用下一版本的knitr ,您将看到一个单行进度条,不会被代码块中的消息打断。目前您可以试用knitr的开发版本(CRAN 版本将于明年 1 月发布)。如果您对knitr的新进度条有任何反馈,也请告诉我。