gpt4 book ai didi

r - 在 R 中调试意外错误——如何找到错误发生的位置?

转载 作者:行者123 更新时间:2023-12-03 15:14:25 25 4
gpt4 key购买 nike

有时 R 会抛出我的错误,例如

Error in if (ncol(x) != 2) { : argument is of length zero



没有额外的信息,当我没有写过这样的代码时。有没有通用的方法来查找哪个包中的哪个函数导致错误?

由于大多数包都经过压缩,因此 grep /usr/lib/R/library 并非易事.

最佳答案

您可以使用 traceback()定位最后一个错误发生的位置。通常它会指向您在函数中进行的调用。然后我通常把browser()此时,再次运行该函数,看看出了什么问题。

例如,这里有两个函数:

f2 <- function(x)
{
if (x==1) "foo"
}

f <- function(x)
{
f2(x)
}

请注意 f2()假设一个长度为 1 的参数.我们可以滥用 f :
> f(NULL)
Error in if (x == 1) "foo" : argument is of length zero

现在我们可以使用 traceback()找出问题所在:
> traceback()
2: f2(x) at #3
1: f(NULL)

数字表示我们在嵌套函数中的深度。所以我们看到 f电话 f2并且在行 3 处出现错误.很清楚。我们可以重新分配 fbrowser放在 f2 之前现在打电话来检查它的输入。 browser()只是允许您停止执行函数并在其环境中环顾四周。类似于 debugdebugonce除了您不必执行每一行,直到您知道出现问题为止。

关于r - 在 R 中调试意外错误——如何找到错误发生的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com