如果我从命令行(R --slave script.R)运行一个长的R脚本,那么如何让它在出现错误时给出行号?

如果可能的话,我不想在脚本中添加调试命令;我只想让R像大多数其他脚本语言一样工作.

推荐答案

这不会给出行号,但它会告诉您在调用堆栈中发生故障的位置,这非常有用:

traceback()

[编辑:从命令行运行脚本时,您必须跳过一个或两个调用,请参见traceback() for interactive and non-interactive R sessions

如果没有常见的调试疑点,我不知道还有其他方法可以做到这一点:

  1. 调试()
  2. 浏览器()
  3. 选项(error=recover)[后跟选项(error=NULL)将其还原]

You might want to look at this related post.

[编辑:抱歉...刚刚看到你在命令行上运行这个.在这种情况下,我建议使用选项(错误)功能.下面是一个简单的例子:

options(error = quote({dump.frames(to.file=TRUE); q()}))

在出现错误的情况下,您可以创建任意复杂的脚本,因此您应该决定调试所需的信息.

否则,如果有您关心的特定区域(例如连接到数据库),请将它们包装在tryCatch()函数中.

R相关问答推荐

如何使用R以NASAGIBS.ViirsEarthAtNight2012风格绘制自定义 map

R:随机抽取所有可能排列的样本

返回句子中最长的偶数长单词

棒棒糖图表大小和线宽参数故障标签未出现

使用gggplot 2在R中重新调整面板和y轴文本大小

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

使用R中的Shapetime裁剪格栅文件

Highcharter多次钻取不起作用,使用不同方法

隐藏e_mark_line的工具提示

如何在R中合并和合并多个rabrame?

如何通过Docker部署我的shiny 应用程序(多个文件)

错误:非常长的R行中出现意外符号

使用geom_segment()对y轴排序

在R中无法读入具有Readxl和lApply的数据集

DEN扩展包中的RECT树形图出现异常行为

Data.table';S GForce-将多个函数应用于多列(带可选参数)

R-按最接近午夜的时间进行筛选

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

名字的模糊匹配

从矩阵创建系数图