如何验证从Perl执行的R脚本的正常终止?
我写了一个shebang R脚本,并希望从Perl脚本中执行它。 我目前使用system ($my_r_script_path, $r_script_arg1, $r_script_arg2, ...)
和我的问题是我如何验证R脚本正常终止(没有错误或警告)。
我猜应该让我的R脚本在最后返回一些真正的值,只要一切正常,然后在Perl中捕获这个值,但我不知道该怎么做。
谢谢!
您可以在命令quit()
设置返回值,例如q(status=1)
。 默认值是0,另请参阅?退出。 如何用Perl捕捉那个,就像在Perl中捕获任何其他返回值。 它保存在一个特殊变量$?
如果我没记错的话。 另请参阅perldoc for system
的示例,应该在此处进行说明。
在旁注中,我只是使用R-Perl接口。 你可以在这里找到信息和例子:http://www.omegahat.org/RSPerl/
为了完整:
在脚本的开始处,您可以放置如下内容:
options(
warn=2, # This will change all warnings into errors,
# so warnings will also be handled like errors
error= quote({
sink(file="error.txt"); # save the error message in a file
dump.frames();
print(attr(last.dump,"error.message"));
sink();
q("no",status=1,FALSE) # standard way for R to end after errors
})
)
这将保存错误消息,并退出R会话而不保存,并退出代码1,而不运行.Last。
尽管如此,R-Perl接口提供了更多的可能性,值得一试,如果你想更频繁地这样做。
链接地址: http://www.djcxy.com/p/47743.html上一篇: How to verify normal termination of R scripts executed from Perl?
下一篇: How to figure out which column raises an arithmetic overflow error upon insert?