2
我試圖在R(我的第一個!)中編寫一個for循環,以生成並保存使用函數lmer在包lme4中擬合的幾個混合效果模型的診斷圖。這是我做了什麼至今所sleepstudy數據爲例:如何製作lmer模型obejcts的列表以用於R中的for循環?
require(lme4)
mod1<-lmer(Reaction ~ Days + (1|Subject),sleepstudy)
mod2<-lmer(Reaction ~ 1 + (1|Subject),sleepstudy)
List<-c(mod1,mod2)
names<-c("mod1","mod2")
i=1
for (i in 1:length(List)) {
jpeg(file = paste("modelval_", names[i], ".jpg", sep=""))
par(mfrow=c(2,2))
plot(resid(List[i]) ~ fitted(List[i]),main="residual plot")
abline(h=0)
qqnorm(resid(List[i]), main="Q-Q plot of residuals")
qqnorm(ranef(List[i])$Subject$"(Intercept)", main="Q-Q plot of random effect")
dev.off()
}
打字成R康壽時,我得到了以下錯誤消息:
Error in function (formula, data = NULL, subset = NULL, na.action = na.fail, :
invalid type (NULL) for variable 'resid(list[i])'
我有一種感覺,問題是與我創建的模型列表相關,而不是for循環本身,我認爲它可能與類S4的模型對象有關。是否有可能製作這樣的清單? 我也試圖使列表類似下面,有沒有改善(仍然得到同樣的錯誤消息)
List<-list(mod1,mod2)