问题描述
我想抑制 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,这是项目选项之一。如果您直接运行,请运行 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)
语句。