1

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

所以 Sweave 代码块

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

理想情况下会产生一个文件

stop('hello')
Error: hello

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

我弄乱了各种 Sweave 代码块包括参数。我想出的唯一解决方案是有一个隐藏的代码块来打印错误文本cat()——这违背了使用 Sweave 的目的。似乎该函数可能有一个解决方案可以sink()以某种方式重定向stderr,但也无法弄清楚。有什么建议么?

4

1 回答 1

2

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

默认情况下,knitr在 RStudio 下,生成的文档几乎正是您想要得到的。

在 Sweave 下,您可以使用以下解决方法,取自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')))
@
于 2013-02-15T08:07:31.573 回答