Debugging 调试littler/rscript

Debugging 调试littler/rscript,debugging,r,Debugging,R,如何调试从命令行运行的rscript 我目前正在使用getopt包传递命令行选项,但如果出现错误,我很难: 看看到底出了什么问题 在R中交互调试(因为脚本需要命令行选项。) 有人有示例代码并愿意分享吗 我要么使用老式的打印语句,要么使用交互式分析。为此,我首先使用save()保存状态,然后将其加载到交互式会话中(为此我使用Emacs/ESS)。这允许在逐行的基础上使用脚本代码进行交互式工作 但是我通常先在交互模式下编写/测试/调试代码,然后再将其部署到一个较小的脚本中。您可以使用--args将命

如何调试从命令行运行的
rscript

我目前正在使用
getopt
包传递命令行选项,但如果出现错误,我很难:

  • 看看到底出了什么问题
  • R
    中交互调试(因为脚本需要命令行选项。)

  • 有人有示例代码并愿意分享吗

    我要么使用老式的打印语句,要么使用交互式分析。为此,我首先使用
    save()
    保存状态,然后将其加载到交互式会话中(为此我使用Emacs/ESS)。这允许在逐行的基础上使用脚本代码进行交互式工作


    但是我通常先在交互模式下编写/测试/调试代码,然后再将其部署到一个较小的脚本中。

    您可以使用--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()函数进行调试。

    另一个选项是使用选项(错误)功能。下面是一个简单的例子:

    options(error = quote({dump.frames(to.file=TRUE); q()}))
    
    您可以在错误条件下创建任意复杂的脚本,因此您应该决定调试所需的信息


    否则,如果有您关心的特定区域(例如连接到数据库),则将它们封装在tryCatch()函数中。

    我尝试了您的建议,得到了以下结果:-(
    >R-I indivA12_AATAAG-d hmm_data/indivA12_AATAAG-c all***进一步的命令行参数('-I indivA12_AATAAG-c all'))忽略
    好的,没关系,我错过了你说要使用的部分--args.Now R打开,但我得到了这个错误:
    >source('msg/write hmm data.R')if(file==“”)文件中的错误