我正在尝试在 R 中编写一个 for 循环(我的第一个!),以便生成和保存使用 lme4 包中的函数 lmer 拟合的几个混合效果模型的诊断图。这是我迄今为止所做的,以 sleepstudy 数据为例:
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 consol 时收到以下错误消息:
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)