为什么抑制 Rmarkdown 中的错误不起作用?

why suppress Error in Rmarkdown doesn't work?

我想抑制 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}

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

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

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

如果您使用的是 RStudio,这是项目选项之一。如果你是直接 运行ning 事情,运行 knitr::knit("<your filename>"),而不是 Sweave("<your filename>")

还有一些其他错误会导致 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) 语句。