编织为PDF时如何摆脱垃圾代码

时间:2018-07-01 23:46:54

标签: r rstudio

我正在编织pdf,但是在输出图形时,它也会输出以下内容。如何阻止R输出此内容?

##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Registering fonts with R
Importing fonts may take a few minutes, depending on the number of fonts and the speed of the system.
Continue? [y/n]
## Exiting.
## Arial Black already registered with windowsFonts().
## Arial already registered with windowsFonts().
## Arial Narrow already registered with windowsFonts().

代码:

```{r, echo=FALSE}
library(dplyr)
library(kableExtra)
library(knitr)
library(extrafont)
font_import()
loadfonts(device = 'win')

x <- seq(1,9,by = 1)

kable(x,format = 'latex', booktabs = T, caption = "A KnitR Kable")
```

2 个答案:

答案 0 :(得分:3)

通常有一个单独的区域,您可以在其中加载所有软件包并包含message = FALSE, warning = FALSE选项。这样会使输出静音,并使文件不会被有时很多警告加载程序包所填充:

```{r, message = FALSE, warning = FALSE}
library(dplyr)
library(kableExtra)
library(knitr)
library(extrafont)
```

```{r, echo=FALSE}
font_import()
loadfonts(device = 'win')

x <- seq(1,9,by = 1)

kable(x,format = 'latex', booktabs = T, caption = "A KnitR Kable")
```

确保没有任何与用户相关的警告或消息被静默。

答案 1 :(得分:1)

这是您需要做的:

  1. 确保所有代码至少提前运行一次以下载所有内容(我确定已完成)

  2. font_import(prompt=F)禁用提示。如果需要,也可以将其包装在suppressMessages()中。

您还应该在其他可能需要的地方随意使用suppressMessages(),但是在抑制它们之前,请确保您知道这些消息是什么。

此外,即使在架构的更高层次上,我也不确定您是否真的需要在代码块中使用所有这些功能。为什么不先运行它们呢?好吧,如果有充分的理由,请参考上面的建议。否则,很容易将嘈杂的代码放在一个块中而不显示其输出,然后将kable行和其他相当的代码放在将要显示其输出的块中。