我需要对数据框中的所有变量执行单变量逻辑回归。我有166个变量,我一直在尝试使用lapply来简化这个过程。但是,我一直收到错误:
> lapply(data$Gates, FUN=Lmodel)
Error in model.frame.default(formula = Sstatus ~ x, data = data,
na.action = na.exclude, :
variable lengths differ (found for 'x')
我像这样建立了Lmodel函数:
Lmodel<-function(x){
(glm(Sstatus~x, data=data, family="binomial"))
}
该功能在不与lapply结合使用时有效:
> Lmodel(data$Gates)
Call: glm(formula = Sstatus ~ x, family = "binomial", data = data,
na.action = na.exclude)
Coefficients:
(Intercept) xy
2.5986 -0.6527
Degrees of Freedom: 169 Total (i.e. Null); 168 Residual
(8 observations deleted due to missingness)
Null Deviance: 96.72
Residual Deviance: 95.57 AIC: 99.57
我的因变量Sstatus确实包含一些缺失值,我认为这是我的问题所在。但是,我不明白为什么函数本身可以工作,但是当与lapply一起使用时则不行。我该如何解决这个问题?
答案 0 :(得分:0)
如果你想使用lapply,你必须列出一个列表,其中列表元素是包含独立变量观察值的向量。例如,您有一个包含变量Sstatus,indepen1,indepen2,indepent3的数据集。
# make a list
list.of.indepent <- vector("list", 3)
list.of.indepent[[1]] <- indepen1
etc
然后
lapply(list.of.indepent, FUN=Lmodel)
应该有效。
您可能需要编辑Lmodel函数,如下所示
Lmodel<-function(x){
(glm(data$Sstatus~x, family="binomial"))
}