有一个definitive guide用于查看函数的源代码,但是如何调试一个不是从包导出的函数,而不手动遍历您找到的源代码呢?
library(plm)
> predict.plm
Error: object 'predict.plm' not found
> plm:::predict.plm
function (object, newdata = NULL, ...)
{
tt <- terms(object)
if (is.null(newdata)) {
result <- fitted(object, ...)
}
else {
Terms <- delete.response(tt)
m <- model.frame(Terms, newdata)
X <- model.matrix(Terms, m)
beta <- coef(object)
result <- as.numeric(crossprod(beta, t(X)))
}
result
}
<environment: namespace:plm>
> debugonce("predict.plm")
Error in debugonce("predict.plm") : could not find function "predict.plm"
> debugonce("plm:::predict.plm")
Error in debugonce("plm:::predict.plm") :
could not find function "plm:::predict.plm"发布于 2014-03-02 21:11:05
这一点都不明显,但将参数作为符号而不是引用的字符串似乎很好,即
debugonce(plm:::predict.plm)而不是
debugonce("plm:::predict.plm")发布于 2014-03-02 20:58:14
我使用过的一个技巧是首先为本地对象分配:
predict.plm <- plm:::predict.plm之后你可以做fix(),debug(),.本地副本。
发布于 2018-04-03 19:18:12
我做了这个技巧:假设您必须调试代码线
rmarkdown::render("myDocument.Rmd") 然后,你可以在代码线下面加上y。
f <- function () {
rmarkdown::render("myDocument.Rmd")
}下一首
debug(f)
f ()https://stackoverflow.com/questions/22133191
复制相似问题