使用Sweave显示错误

10

我正在使用Sweave编写R笔记,想展示常见错误。例如,

<<echo=TRUE, eval=TRUE>>=
x = 5
#Case matters!
x*X
@

然而,当进行编织时,文档由于R错误无法编译。是否有办法使Sweave编译并显示(格式良好的)错误信息?

3个回答

8
这在使用“下一代Sweave”——knitr时不再是问题。它默认显示错误和警告,而这在Sweave中很难或不可能实现,此外还有许多其他好的特性(例如语法着色、PGF集成和绘图动画等)。此软件正在积极开发和维护中。 Sweave代码必须使用同一软件包提供的Sweave2knitr函数进行转换。

6
如Shane所建议,使用


<<echo=TRUE,eval=FALSE>> 

对于会出错的代码,但您想要显示它,可以使用

重新开始。

<<echo=FALSE,eval=TRUE,results=verbatim>> 

但是将同样的代码包装在try里面。
这里有一个例子: http://tolstoy.newcastle.edu.au/R/help/05/09/11690.html

2

将错误包装在try()命令中。这样它就会继续运行:

> {print(1); try(x*X); print(2)}
[1] 1
Error in try(x * X) : object 'X' not found
[1] 2

我想过这个,但是希望避免显示“尝试”。 - csgillespie
1
我的另一个想法是可能有一个选项(error=some.function)可以工作,但我找不到任何东西。你可以调用每个代码片段两次:一次尝试并echo=FALSE但eval=TRUE和捕获错误消息。然后再次尝试而设置相反。然后只需单独打印出错误消息即可。 - Shane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接