【问题标题】:why suppress Error in Rmarkdown doesn't work?为什么抑制 Rmarkdown 中的错误不起作用?
【发布时间】:2026-01-30 10:40:01
【问题描述】:

我想抑制 Rmw 文件中的错误。所以,我尝试设置全局块选项error=TRUE,但它不起作用。此外,直接在块中设置块选项error=TRUE 也不起作用。 这是一个示例代码:


\begin{document}
\SweaveOpts{concordance=TRUE}

abc 
<<setup, cache=F, include=F>>=
library(knitr)
library(formatR)
opts_chunk$set(error=TRUE)
knit_hooks$set(error=TRUE)
@

<<a,error=TRUE>>=
A <- 5
# of course, that doesnt work, but i want the error message as chunk output
A * B
@
\end{document}

我不明白为什么它不起作用

只有错误信息: “评估错误(expr,.GlobalEnv):找不到对象'L'” 出现。

【问题讨论】:

    标签: r error-handling r-markdown knitr sweave


    【解决方案1】:

    您似乎使用的是来自基本 R 的 Sweave 而不是 knitr。如果您使用的是knitr,则会收到有关\SweaveOpts{concordance=TRUE} 语句的警告。

    如果您使用的是 RStudio,这是项目选项之一。如果你直接运行,运行knitr::knit("&lt;your filename&gt;"),而不是Sweave("&lt;your filename&gt;")

    还有一些其他错误会阻止knitr 工作;这个版本修复了它们:

    \documentclass{article}
    
    \begin{document}
    
    abc 
    <<setup, cache=F, include=F>>=
    library(knitr)
    library(formatR)
    opts_chunk$set(error=TRUE)
    @
    
    <<a,error=TRUE>>=
    A <- 5
    # of course, that doesnt work, but i want the error message as chunk output
    A * B
    @
    \end{document}
    

    变化是:

    • 您需要在开头使用 \documentclass 行。
    • 您不想要\SweaveOpts{concordance=TRUE} 语句。
    • 您不想要knit_hooks$set(error=TRUE) 语句。

    【讨论】:

      最近更新 更多