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

How do I supress sqldf messages in R Markdown?

我有一个调用 sqldf 包的 R 代码块。当我将 Rmd 编​​入 HTML 时,HTML 打印并显示 sqldf 代码。我怎么hide/supress呢?我已经尝试通过关闭 ECHO、抑制警告等来修改块设置...

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

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

.....等等

这些是我块的当前设置:

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

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

```

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

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

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

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

所以这些输出是由 cat() 而不是 message()warning() 产生的,所以对于 knitr 来说,它们与最后打印到控制台的对象没有区别。

如果你真的想用(sqldf 选项)verbose = TRUE 显示代码(块选项 echo = TRUE),但你不想要所有冗长的输出(看起来很奇怪)我会建议用两个代码块来欺骗它,一个不求值但显示,一个求值但不包含。

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


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