如何在Sweave文档中包含R stderr输出

时间:2013-02-15 07:27:16

标签: r stderr sweave

我正在研究R包的插图,在很多情况下,我想在文档中包含错误输出作为用户的示例。

所以Sweave代码块

<<throws_error>>=
 stop('hello')
@

理想情况下会生成一个带有

的文档
stop('hello')
Error: hello

我的真实例子是一个相当长的运行过程,我想捕获警告和消息的输出以及错误。

我已经搞砸了各种Sweave代码块,包括params。我提出的唯一解决方案是使用隐藏的代码块来打印带有cat()的错误文本 - 这会破坏使用Sweave的目的。似乎可能有sink()函数可能以某种方式重定向stderr的解决方案,但是也无法解决这个问题。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您是否使用Sweaveknitr生成LaTeX和pdf文件?

默认使用RStudio下的knitr,生成的文档几乎就是您想要的内容。

在Sweave下,您可以使用以下解决方法,取自this message on R-help

%outputs the R code but does not execute it. So no error
<<echo=TRUE, eval=FALSE>>=
 stop('hello')
@

% executes the code but displays only the error
<<echo=FALSE, eval=TRUE>>=
cat(try(stop('hello')))
@