【发布时间】:2017-02-20 22:23:53
【问题描述】:
我正在尝试通过遍历我的数据集中包含响应变量 (dat_prob) 的列来运行 glmer。我使用的代码如下,改编自对另一个 stackoverflow 问题 (Looping through columns in R) 研究的代码。
他们的代码:
dat_y<-(dat[,c(2:1130)])
dat_x<-(dat[,c(1)])
models <- list()
#
for(i in names(dat_y)){
y <- dat_y[i]
model[[i]] = lm( y~dat_x )
}
我的代码:
dat_prob<-(probs[,c(108:188)])
dat_age<-(probs[,c(12)])
dat_dist<-(probs[,c(20)])
fyearcap=(probs[,c(25)])
fstation=(probs[,c(22)])
fnetnum=(probs[,c(23)])
fdepth=(probs[,c(24)])
models <- list()
#
for(i in names(dat_prob)){
y <- dat_prob[i]
y2=as.vector(y)
model[[i]] = glmer( y ~ dat_age * dat_dist + (1|fyearcap) + (1|fstation)+
(1|fnetnum)+ (1|fdepth),family=binomial,REML=TRUE )
}
我收到此错误,类似于超链接问题中收到的错误:
Error in model.frame.default(drop.unused.levels = TRUE, formula = y ~ :
invalid type (list) for variable 'y'
我已经为此工作了好几个小时,现在无法透过树木看到森林。
感谢任何帮助。
【问题讨论】:
-
您最好将所有内容放在 data.frame 中并对其进行迭代。或者,您可以提前构造公式(无需对数据进行子集化)并将其传递给
glmer函数。您可以使用sapply或lapply翻阅公式列表。