Rmardown Error =在HTML输出上打印的TRUE输出

时间:2016-03-03 05:54:22

标签: r knitr r-markdown

```{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 chunk。我正在r块中创建数据帧abc1,abc2,abc3 ... abc23。问题是我得到了“out of SUBSCRIPTION BOUND ERROR”作为“test [[4]] $ text”测试列表的第4个元素不存在,编译停止和最终输出的过程在HTML输出中打印。

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

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

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

1 个答案:

答案 0 :(得分:2)

我没有找到一个块选项来抑制文档中的错误消息。但是你可以使用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,因为不再存在错误。在目前的情况下,也不需要大多数其他选项,因为块不会产生任何输出,消息或警告。