开发者

R script line numbers at error? [duplicate]

This question already has answers here: How to get R script line numbers at error? (6 answers) Closed 6 years ago.

I found this post from a year ago开发者_开发知识库, and I'm using R version 2.11.1 (2010-05-31), but still getting error messages without line numbers.

Any solution?


The answers given there are still valid. Returning line numbers from a script ain't that straight-forward, but R can give you a lot more information on where the error can be found.

You could use the error options to save the info in a file, for example :

options(error = quote({
  sink(file="error.txt");
  dump.frames();
  print(attr(last.dump,"error.message"));
  traceback();
  sink();
  q()}))

The function findLineNum() could be used if you have the name of the file somewhere available. If you have the error message, you could do something like :

dump.frames()
x <- attr(last.dump,"error.message")
ll <- gsub("Error in (.*) : .*","\\1",x)
lln <- findLineNum(srcfile,ll)


In the upcoming R 2.14, the core team is making progress toward implementing this feature. Functions in scripts loaded with source(file=..., keep.file=TRUE) will contain an attribute srcref, which identifies the range of characters corresponding to the function's definition in an in-memory copy of the source file stored as an object of class srcfilecopy.

This does not immediately provide line-level debugging, but it lets you get approximate line numbers if you're willing to get your hands dirty. Also, it's progress.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜