我仍然不太擅长使用R的标准调试工具,而且我经常发现错误和回溯都不能告诉我足够的信息来弄清楚发生了什么。我想更改R的默认错误行为,以提供更多信息。
特别是,我总是希望call
,包括formals
,分配给每个形式的表达式(如果默认值是分配的表达式,则为默认表达式)以及每个在适当位置求值的参数表达式,所有返回的格式都清楚地表明哪个表达式已与哪个形式以及哪个值与哪个表达式匹配。由于这些值可能很大,或者是意外的或短暂的类型,因此我希望将它们以str()
之类的格式返回,该格式可以对截断进行明智的选择,并正确地识别promise和其他倾向于在看到他们之前先将自己评估为其他事物。
最后,我希望所有这些内容以及每个return
的{{1}}值,从错误返回到(包括)某段错误的调用堆栈上的每个函数我写的代码。在我看来,自然结构将是一个R对象,一个call
列表,每个list
一个列表(可能像call
那样整理成带有一些列表的小标题)专栏),我可以通过明显的方式进行单步操作。
抱歉,如果我描述了一些标准的R调试工具,但我还没有学习如何正确使用它。这有可能吗?如果是这样,它是否可以通过R的可用错误处理程序实现,还是需要某些程序包规模的编码项目?
我最希望使用一种解决方案来更改默认错误响应,但如果不可行,我会接受一种解决方案,该解决方案要求我使用包装器或类似工具重新运行代码块。