如何调试从命令行运行的Rscripts?
我目前正在使用getopt包来传递命令行选项,如果有错误,我很难:
R中进行交互调试(因为脚本需要命令行选项)。
有谁有示例代码并愿意共享吗?
发布于 2009-10-26 17:04:26
您可以将命令行参数传递到与-args交互的shell中,然后将脚本源(‘’)。
$ R --args -v
R version 2.8.1 (2008-12-22)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> require(getopt)
Loading required package: getopt
> opt = getopt(c(
+ 'verbose', 'v', 2, "integer"
+ ));
> opt
$verbose
[1] 1
> source('my_script.R')现在可以使用旧的browser()函数进行调试。
发布于 2009-10-26 07:47:19
我要么使用老式的打印报表,要么使用交互式分析。为此,我首先使用save()保存状态,然后将其加载到交互式会话中(为此使用Emacs/ESS)。这允许在逐行的基础上使用脚本代码进行交互工作。
但是,在部署到较少的脚本之前,我通常先以交互模式编写/测试/调试代码。
发布于 2009-10-26 17:44:39
另一个选项是使用选项(错误)功能。下面是一个简单的例子:
options(error = quote({dump.frames(to.file=TRUE); q()}))在错误条件下,您可以创建任意详细的脚本,因此您应该决定调试所需的信息。
否则,如果有您所关注的特定区域(例如连接到数据库),那么将它们包装在tryCatch()函数中。
https://stackoverflow.com/questions/1622797
复制相似问题