由于存在错误,我想覆盖默认的predict.lm函数:
library(datasets)
# Just a regular linear regression
fit <- lm(mpg~disp+hp+wt+drat, data=mtcars)
termplot(fit, terms=2, se=T)
给出了这个错误:
Error in predict.lm(model, type = "terms", se.fit = se, terms = terms) :
subscript out of bounds
我知道错误的位置,我发送了一封等待核心邮件列表批准的电子邮件,但与此同时我想测试自己的predict.lm函数来解决这个问题。我已经明白我需要重新定义S3函数以进行预测,但在运行此代码时:
setMethod("predict", "lm", predict.lm2)
getMethod("predict", "lm")
getMethod按预期返回我的新函数,但是termplot仍然运行旧函数。 methods("predict")
还显示旧的predict.lm仍在那里,我认为它可能是调用顺序或我需要调整的东西。有谁熟悉如何做到这一点?
答案 0 :(得分:4)
@James的评论建议你定义自己的lm2
班,
扩展lm
,并实施predict.lm2
。
class(fit) <- c("lm2", class(fit))
predict.lm2 <- function(...) {
# The function with your bugfix
cat("Inside predict.lm2\n")
predict.lm(...)
}
termplot(fit, terms=2, se=T)