【问题标题】:Rmardown Error=TRUE output printed on HTML outputRmarkdown Error=TRUE 输出打印在 HTML 输出上
【发布时间】:2016-03-03 05:54:21
【问题描述】:
```{r, error=TRUE, echo=FALSE, message=FALSE, results='hide', warning=FALSE}
    abc1 <- data.frame(content(xyz)$test[[1]]$text)
    abc2 <- data.frame(content(xyz)$test[[2]]$text)
    abc3 <- data.frame(content(xyz)$test[[3]]$text)
    abc4 <- data.frame(content(xyz)$test[[4]]$text)
    abc5 <- data.frame(content(xyz)$test[[5]]$text)
```

如上所述,我已经从我的 rmarkdown 中提到了 r 块。我正在一个 r 块内创建数据帧 abc1,abc2,abc3...abc23。问题是我得到一个“OUT OF SUBSCRIPTION BOUND ERROR”,因为“test[[4]]$text”测试列表的第 4 个元素不存在,编译过程停止,最终输出打印在 HTML 输出中。

通过设置error=TRUE,我可以避免编译停止的问题。编译完成,但最终结果是错误消息打印在最终的 HTML 输出中。有没有办法避免从最终的 HTML 文档中显示或删除错误消息。我试过使用 result='hide' 但似乎没有解决这个问题。我应该如何使用 rmarkdown 获得干净的 HTML 输出而没有错误消息?

这是打印在最终 HTML 输出上的错误消息,我试图使用 r 块选项摆脱它:

## Error in content(xyz)$test[[4]]: subscript out of bounds

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    我没有找到一个块选项来抑制文档中的错误消息。但是你可以使用 R 函数try() 来实现:

    ```{r, echo=FALSE}
        try({
            abc1 <- data.frame(content(xyz)$test[[1]]$text)
            abc2 <- data.frame(content(xyz)$test[[2]]$text)
            abc3 <- data.frame(content(xyz)$test[[3]]$text)
            abc4 <- data.frame(content(xyz)$test[[4]]$text)
            abc5 <- data.frame(content(xyz)$test[[5]]$text)
        }, silent = TRUE)
    ```
    

    根据文档

    try 对表达式求值并捕获在求值过程中发生的任何错误。

    使用参数silent,您可以控制是否打印错误消息。但是,HTML 文件似乎不包含独立于 silent 值的错误消息。

    这也意味着不需要块选项error=TRUE,因为不再有错误。在当前情况下,也不需要大多数其他选项,因为该块不会产生任何输出、消息或警告。

    【讨论】:

    • 太棒了!唯一的事情是我仍然需要有 warning=FALSE 以避免在我的最终 HTML 输出中出现这些消息。
    猜你喜欢
    • 2021-04-02
    • 2020-10-24
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多