有时 R 会抛出错误,例如
if (ncol(x) != 2) { 中的错误:参数长度为零
当我没有编写这样的代码时,没有附加信息。是否有通用方法可以查找哪个包中的哪个函数导致错误?
由于大多数包都是压缩的,因此 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
calls f2
这会在该行给出一个错误3
。很清楚。我们可以重新分配f
with browser
放置在之前f2
现在打电话来检查它的输入。browser()
只是允许您停止执行函数并查看其环境。如同debug
and debugonce
只是您不必执行每一行直到您知道出现问题为止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)