【问题标题】:How do I supress sqldf messages in R Markdown?如何在 R Markdown 中抑制 sqldf 消息?
【发布时间】:2015-12-20 05:45:15
【问题描述】:

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

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

'## sqldf: 库(RSQLite)
'## sqldf: m '## sqldf: 连接 '## sqldf: initExtension(connection)
'## sqldf: dbWriteTable

....等等

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

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

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

```

【问题讨论】:

  • 您要求的输出 (verbose=TRUE) 不是消息。请注意,options(sqldf.verbose = TRUE); sqldf(MyString) 也会输出 RSQLite 代码。您可以将options 语句放在一个单独的块中并显示该块而不对其进行评估。

标签: html r markdown knitr sqldf


【解决方案1】:

如果您根本不想要任何输出(没有消息、没有数据帧、没有显示代码...),请将 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)
```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2018-08-23
    • 1970-01-01
    相关资源
    最近更新 更多