我在一年前找到了此post,我正在使用R version 2.11.1 (2010-05-31)
,但仍然收到没有行号的错误消息。
任何解决方案?
答案 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}的对象存储的源文件的内存中副本中的函数定义对应的字符范围。 }}
这不会立即提供行级调试,但如果您愿意亲自动手,它可以让您获得近似的行号。而且,这是进步。