6

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?

Community
  • 1
  • 1
David B
  • 29,258
  • 50
  • 133
  • 186

2 Answers2

6

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)
Joris Meys
  • 106,551
  • 31
  • 221
  • 263
0

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.

goodside
  • 4,429
  • 2
  • 22
  • 32