我一直在调查this issue,找出哪个软件包会引发以下错误:
if(dif< 0&& any(overlap)){:缺少值的地方出错 需要TRUE / FALSE
长话短说,我无法通过traceback
,debug
或任何其他调试工具找到错误,因此我下载了包本身及其依赖项的源代码,解压缩并运行
grep any\(overlap\) */R/*
导致
directlabels / R / utility.function.R:if(dif< 0&& any(overlap)){
这就是抛出错误的地方,所以任务就完成了。
实际上我在这里有两个主要问题。
search_packages_source <- function(list_of_packages, string)
,有什么可用的吗?traceback
/ debug
未能指向抛出错误的函数? (traceback
显示了绘图渲染的轨迹,debug
我必须猜测是否要进入或退出,所以我很快就放弃了,请参阅下面的编辑以获取更多细节)我也有尝试过Rstudio的调试工具,它们都没有帮助找到错误。 R中的调试对我来说是一项罕见的任务,所以我可能会遗漏一些非常简单的事情。很高兴听到你的提示&amp;技巧!
编辑:这是可以复制的代码的快捷方式,并且有点澄清:
p1 <- ggplot(mtcars, aes(disp, mpg, col=cyl)) + geom_line()
p2 <- ggplot(subset(mtcars, cyl==4), aes(disp, mpg, col=cyl)) + geom_line()
# OK
direct.label(p1, "last.bumpup")
# error
direct.label(p2, "last.bumpup")
现在,如果我traceback()
,我得到一个long output,但没有指出哪个效用函数失败了。如果我debug()
,我会得到even longer output,这也无处可去。所以问题不仅在于我的调试技术缺乏,而且还因为包之间的交叉依赖性。