R脚本行号错误?

时间:2010-09-06 09:42:33

标签: debugging r

我在一年前找到了此post,我正在使用R version 2.11.1 (2010-05-31),但仍然收到没有行号的错误消息。

任何解决方案?

2 个答案:

答案 0 :(得分:6)

那里给出的答案仍然有效。从脚本中返回行号不是那么简单,但R可以为您提供有关错误发现位置的更多信息。

您可以使用错误选项将信息保存在文件中,例如:

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

如果您在某处可用文件的名称,则可以使用函数findLineNum()。如果您有错误消息,可以执行以下操作:

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

答案 1 :(得分:0)

在即将发布的R 2.14中,核心团队正在实施此功能。加载了source(file=..., keep.file=TRUE)的脚本中的函数将包含一个属性srcref,该属性标识与作为类{{1}的对象存储的源文件的内存中副本中的函数定义对应的字符范围。 }}

这不会立即提供行级调试,但如果您愿意亲自动手,它可以让您获得近似的行号。而且,这是进步。