我在R中运行以下模型:
g<-lm(NA.~ PC + I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI))),data=DSET)
运行正常。但是当我想交叉验证同一模型时:
a<-CVlm(df=DSET,form.lm = g ,m=5)
结果是以下消息:
Error in model.frame.default(formula = form, data = df[rows.in, ], drop.unused.levels = TRUE) :
variable lengths differ (found for 'I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI)))')
编辑:
我通过以下方式再次运行模型g:
g<-lm(NA.~ PC + I(1/(SPCI * (PC + PI))),data=DSET)
输出与第一种方法相同。然后,我使用相同的代码进行交叉验证并运行。
所以我的问题是:为什么
I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI))
不被交叉验证代码接受并给出该消息? 最佳答案
我大概是第五次来到这里,总是想知道为什么@jlhoward给出的答案不起作用。因此,对于将来的读者(包括我)来说,要使此代码起作用,请按以下方式用df
替换data
:
CVlm(data=DSET,form.lm = form ,m=5)
您可以在documentation(第47页)中阅读更多内容。