【发布时间】:2021-01-21 02:14:33
【问题描述】:
根据this question,当从 do.call 语句中调用它时,调试器浏览器不会向我显示它停止的位置。首先它将所有参数打印到控制台,然后浏览器通常没有响应,除了强制退出 RStudio 之外别无选择。有没有人有任何类似的经验并且可以指出任何修复?
This 似乎也描述了类似的问题。
【问题讨论】:
根据this question,当从 do.call 语句中调用它时,调试器浏览器不会向我显示它停止的位置。首先它将所有参数打印到控制台,然后浏览器通常没有响应,除了强制退出 RStudio 之外别无选择。有没有人有任何类似的经验并且可以指出任何修复?
This 似乎也描述了类似的问题。
【问题讨论】:
这很可能是因为您已将一些数据集传递给使用do.call 调用的函数。发生错误时,R 的默认行为是进入调试模式并打印整个函数调用以获取上下文。但是,由于do.call 在调用函数之前会解析每个参数,这可能会导致语句很长,从而导致 R 挂起。
为了限制进入browser()模型调试时返回的调用长度,可以设置最大解析长度:
options(deparse.max.lines = 10)
从 R 4.0 开始,您可以通过设置选项 traceback.max.lines 来限制进入调试模式时打印的函数调用的长度而不改变 deparse() 的其他用途:
options(traceback.max.lines = 10)
这应该可以防止在 do.call 调用的函数中进行调试时打印已解析的函数调用导致的挂起。
即使设置了这些选项,bug has been identified with Rstudio 也会导致其挂起。您或许可以在 R 控制台中或使用其他工具调试此代码。
【讨论】: