我正在研究R包的插图,在很多情况下,我想在文档中包含错误输出作为用户的示例。
所以Sweave代码块
<<throws_error>>=
stop('hello')
@
理想情况下会生成一个带有
的文档stop('hello')
Error: hello
我的真实例子是一个相当长的运行过程,我想捕获警告和消息的输出以及错误。
我已经搞砸了各种Sweave代码块,包括params。我提出的唯一解决方案是使用隐藏的代码块来打印带有cat()
的错误文本 - 这会破坏使用Sweave的目的。似乎可能有sink()
函数可能以某种方式重定向stderr的解决方案,但是也无法解决这个问题。有什么建议吗?
答案 0 :(得分:2)
您是否使用Sweave
或knitr
生成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')))
@