我想重写默认predict.lm功能由于错误:如何覆盖R中的默认S3函数?
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仍然存在,我认为它可能是调用顺序或我需要调整的东西。任何人都知道如何做到这一点?
您可以尝试设置模型的类。 'class(fit)< - c(“lm2”,“lm”)' – James 2012-02-14 10:44:48
然后它抱怨说缺少lm2类的定义 – 2012-02-14 10:55:15
您使用setMethod时不使用S3,而使用S4。这会带来麻烦。 – 2012-02-14 12:42:40