我来说个高级一点的“浮云”:很久以来我都很不满Sweave的错误处理机制,甚至都有改写Sweave源代码的念头,这件事情本应该很容易解决,但R core们估计太忙了——每段代码加上try()然后要是出错就打印错误信息,不要让Sweave直接在某段代码上挂掉。最近R 2.12.0在这个问题上改进了一小步,如果代码段解析出错,那么会打印错误出现的行号,但还是没解决根本问题,后面据说还要改进。这是引子。
Sweave出错就让R挂掉这种方式对于用LyX来说非常不方便,每当出错,都很难查错,因为没有任何错误日志;要检查错误,还得打开R,在交互模式下运行Sweave(),看到底哪里错了。这也是很久以来我觉得头疼的问题。这学期做579课的TA,上周两节课讲LyX和Sweave,因为我一直鼓吹LyX的种种好处,二老板估计也好奇,于是就把课交给我来上。这LyX+Sweave好用是好用,就是配置过程太琐碎,上课花了不少时间在这个配置上,于是课下花了很大功夫写了个自动配置脚本,尽量让用户不必管任何细节问题,一切都用命令行搞定。然而还是没有错误信息的解决办法,学生们的文档运行出错我通过Email也很难知道错在哪里,很多时候只能凭经验。
今天应开(这是个人名)同学也问起这个问题,我回复了我的查错办法之后他回了他的办法:调用R的时候,将命令行输出重定向到文件就可以了,也就是这种形式:
R -e Sweave('your-Sweave-file.Rnw') >> your-log-file.log
原来答案这么简单,我怎么没想到呢。
小月月那点浮云算啥浮云呐,这才真的叫“神马都是浮云”。
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿。无论金额多少,都是一片诚挚的心意。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: xie@yihui.name PayPal: xie@yihui.name |
![]() |
若使用 Venmo/Zelle/Paypal,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间我共收到约三万美元捐赠,完税后我转手捐出了一万五千美元。

