【问题标题】:Suppressing Error Messages in knitr抑制 knitr 中的错误消息
【发布时间】:2014-07-27 06:18:04
【问题描述】:

我想知道如何抑制knitr 中的错误消息。我的 MWE 如下:

\documentclass{article} 
\begin{document}
<< Test >>=
1:10
X
@ 
\end{document}

已编辑

对象X 不存在。我想在我的代码块中显示X 并且也想评估它,即使这会引发错误。但不想在我的.tex 文档中显示任何错误,因为我们可以通过设置warning=FALSE 来抑制警告。

【问题讨论】:

  • 是的 X 不存在并且会产生错误。我不想在我的 knitr 文件中显示任何错误消息。
  • 是的,我想在我的代码块中显示X 并且也想评估它。但不想显示任何错误,因为我们可以通过设置 warning=FALSE 来抑制警告。
  • 试试error=FALSE,但你的目标对我来说并不完全清楚。
  • OP只想让代码运行,不显示错误,这怎么不清楚?
  • 当chunk出错时会出现includechunk option失败。如果无论如何都可以阻止块出现在结果中,我希望@Yihui 能够加入。

标签: r latex knitr sweave


【解决方案1】:

错误有自己专用的钩子函数,存储在knit_hooks$get()访问的环境中。为了您的启发,这里是这些功能的完整列表:

names(knit_hooks$get())
# [1] "source"   "output"   "warning"  "message"  "error"    "plot"    
# [7] "inline"   "chunk"    "document"

要抑制警告,只需用一个接受所需参数但根本不返回任何内容的错误挂钩函数覆盖默认错误挂钩函数。

\documentclass{article}
\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
muffleError <- function(x,options) {}
knit_hooks$set(error=muffleError)
@

<<Test>>=
1:10
X
@
\end{document}

编译后会产生以下结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2023-03-21
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多