R script line numbers at error?

后端 未结 6 1764
迷失自我
迷失自我 2020-11-28 21:12

If I am running a long R script from the command line (R --slave script.R), how can I get it to give line numbers at errors?

I don\'t want to add debug commands to

6条回答
  •  眼角桃花
    2020-11-28 21:48

    Support for this will be forthcoming in R 2.10 and later. Duncan Murdoch just posted to r-devel on Sep 10 2009 about findLineNum and setBreapoint:

    I've just added a couple of functions to R-devel to help with debugging. findLineNum() finds which line of which function corresponds to a particular line of source code; setBreakpoint() takes the output of findLineNum, and calls trace() to set a breakpoint there.

    These rely on having source reference debug information in the code. This is the default for code read by source(), but not for packages. To get the source references in package code, set the environment variable R_KEEP_PKG_SOURCE=yes, or within R, set options(keep.source.pkgs=TRUE), then install the package from source code. Read ?findLineNum for details on how to tell it to search within packages, rather than limiting the search to the global environment.

    For example,

    x <- " f <- function(a, b) {
                 if (a > b)  {
                     a
                 } else {
                     b
                 }
             }"
    
    
    eval(parse(text=x))  # Normally you'd use source() to read a file...
    
    findLineNum("#3")   #  is a dummy filename used by
    parse(text=)
    

    This will print

     f step 2,3,2 in 
    

    and you can use

    setBreakpoint("#3")
    

    to set a breakpoint there.

    There are still some limitations (and probably bugs) in the code; I'll be fixing thos

提交回复
热议问题