如何在R Markdown中抑制sqldf消息?

时间:2015-09-23 03:40:49

标签: html r markdown knitr sqldf

我有一个调用sqldf包的R代码块。当我将Rmd编织成HTML时,HTML会打印并显示sqldf代码。我该如何隐藏/压制它?我已经尝试通过关闭ECHO,抑制警告等来修改块设置......

这是我要从HTML中删除的打印文本:

  

' ## sqldf:library(RSQLite)
  ' ## sqldf:m< - dbDriver(" SQLite")
  ' ## sqldf:connection< - dbConnect(m,dbname =":memory:")
  ' ## sqldf:initExtension(连接)
  ' ## sqldf:dbWriteTable

....等。

这些是我的块的当前设置:

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

library(sqldf)
MyQuery <- sqldf(MyString,verbose=TRUE) 

```

1 个答案:

答案 0 :(得分:4)

如果您根本不想要任何输出(没有消息,没有数据框,没有显示代码......),请将include = FALSE设置为块选项。

如果您想显示代码,但又不喜欢sqldf备注,请将verbose = TRUE更改为verbose = FALSE

如果查看sqldf代码,就会看到以下内容:

if (verbose) {
    cat("sqldf: dbGetQuery(connection, '", x[i], 
        "')\n", sep = "")
}

因此,这些输出是由cat()而不是message()warning()生成的,所以对于knitr来说,它们与最后打印到控制台的对象无法区分。

如果你真的想用(sqldf选项)echo = TRUE显示代码(chunk选项verbose = TRUE),但你不想要所有详细的输出(看起来很奇怪)我&#39 ; d建议使用两个代码块来欺骗它,一个未评估但显示的代码块,以及一个已评估但未包含的代码块。

```{r sqldata, eval = FALSE}
library(sqldf)
MyQuery <- sqldf(MyString,verbose=TRUE)
```


```{r sqldata, eval = TRUE, include = FALSE}
library(sqldf)
MyQuery <- sqldf(MyString)
```