2017-04-11 40 views
1

下面的代码仍然导致无法抑制来自knitr

```{r echo=FALSE, warning=FALSE} 
rm(list=ls()) 
library(randomForest) 
library(tree) 
library(ggplot2) 
``` 

以下消息 - 我怎么能抑制后续?

## randomForest 4.6-12 

## Type rfNews() to see new features/changes/bug fixes. 

## 
## Attaching package:'ggplot2' 

## The following object is masked from'package:randomForest': 
## 
##  margin 

回答

2

在我看来,最好避免一揽子抑制邮件或警告,因为它很容易错过做的想要被警告的真实问题。我建议在每个软件包加载时有选择地禁用软件包加载消息。这样,如果您将新软件包添加到库列表中,您将看到生成的任何错误或消息,并且可以选择压缩它们或以其他方式处理它们。

```{r echo=FALSE} 
rm(list=ls()) 
suppressMessages(library(randomForest)) 
library(tree) 
suppressMessages(library(ggplot2)) 
``` 
+0

一般情况下,应该抑制_warnings_时要小心,但我认为消息通常安全的定义被抑制(如果他们是真正重要的,作者应该使用'警告()'代替),特别是在程序包启动消息。 'suppressMessages()'可能会令人惊讶,并且会吸引那些不知道它的人的不必要的关注。总之,我认为你有一点,但在这种情况下,我会使用chunk选项'message = FALSE'来获得更清晰的代码。 –

+0

理论上我同意你的观点,在Python中这通常是我的立场。但是对于R来说,我已经看到很多来自软件包加载的“消息”,我会考虑警告而不是消息。我选择将它们全部看作是所有警告。但它确实使代码非常难看;我仍然在想办法让这种清洁剂更清洁。 – Mikuana

2

您可以添加message=FALSE

```{r echo=FALSE, warning=FALSE, message=FALSE} 

如果不工作,包的作者是(错误地)使用超过message()的消息以外的东西。