r - 如何创建在 R 的 for 循环中使用的 lmer 模型对象列表?

标签 r list for-loop lme4 mixed-models

我正在尝试在 R 中编写一个 for 循环(我的第一个!),以便生成和保存使用包 lme4 中的函数 lmer 拟合的几个混合效应模型的诊断图。这是我迄今为止所做的 sleep 研究数据的示例:

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<-list(mod1,mod2)

最佳答案

首先使用c可能会面临丢失已创建对象的类结构的风险。要创建包含模型的列表,请使用 list(mod1, mod2)

其次,List[i]是一个长度为1的列表,包含List的第i个元素。使用 List[[i]] 提取元素本身(您的模型)。

关于r - 如何创建在 R 的 for 循环中使用的 lmer 模型对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027850/

相关文章:

c - 使用随机值开始循环,然后循环整个范围

r - 将文本行分隔为数据框的列

list - R:提取 lm() 属性

r - ggplot2 密度直方图,宽度 =.5,vline 和中心条位置

python - 如何根据垂直位置重命名 python 列表列表中的重复元素?

c# - 从值为 List<string> 的字符串中获取键

android - android中的数据绑定(bind)复杂列表

php - 在循环中使用 ff mpeg 创建缩略图

r - 在 Shiny 的服务器上找不到 PhantomJS

php - For 循环,递增并插入前一行的值