从do.call内部调用R / Rstudio中调试浏览器的崩溃

时间:2017-06-17 18:58:11

标签: r debugging rstudio

this question一致,调试器浏览器不显示在do.call语句中调用它时停止的位置。首先,它将所有参数打印到控制台,然后通常浏览器没有响应,除了强制退出RStudio之外别无选择。有没有人有任何相同的经验,可以指出任何修复?

This 似乎也描述了类似的问题。

1 个答案:

答案 0 :(得分:0)

这可能是因为您已将一些数据集传递给使用 do.call 调用的函数。 R 发生错误时的默认行为是进入调试模式并打印整个函数调用以获取上下文。但是,因为 do.call 在调用函数之前会解析每个参数,所以这会导致语句很长,导致 R 挂起。

为了限制进入browser()模型调试时返回的调用长度,可以设置最大解析长度:

options(deparse.max.lines = 10)

从 R 4.0 开始,您可以通过设置选项 deparse() 来限制进入调试模式时打印的函数调用的长度,而无需更改 traceback.max.lines 的其他用途:

options(traceback.max.lines = 10)

这应该可以防止在 do.call 调用的函数内调试时打印解析的函数调用导致的挂起。

即使设置了这些选项,也会导致它挂起的 bug has been identified with Rstudio。您可以在 R 控制台中或使用其他工具调试此代码。