2017-04-11 57 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()的消息以外的東西。