繁体   English   中英

在 r 中尝试使用 lapply 进行逻辑回归时出错

[英]Error while trying to use lapply for logistic regression in r

我为数据创建了一个变量子集(同时仍然维护数据的 rest)。 然后我尝试使用 lapply 同时估计许多逻辑回归模型——循环遍历子集作为不同的预测变量。

#Creating a list for the loop to run through
metab.start <- which(colnames(df) == "Anhydro_1.5_D_glucitolArea"); metab.start
metab.stop <- which(colnames(df) == "ErythritolArea"); metab.stop
metabolite.names <- colnames(df)[metab.start:metab.stop]

#logistic regression loop
mdls<-lapply(metabolite.names, function(X) glm(hpresponse1~X, data=df, 
family="binomial"))

但它会产生此错误:

Error in model.frame.default(formula = hpresponse1 ~ X, data = df, 
drop.unused.levels = TRUE) : 
variable lengths differ (found for 'X')

我不确定,但我认为问题是子集 object 的数据类型。当我在子集 object (metabolite.names) 上使用 str() 时,它说它是一个字符。 但我认为 lapply 是用于列表的? 然后还有 sapply 和 mapply 可以用于向量和矩阵,对吗? 另一个问题是,我不认为创建该子集时会保留单个数据值。 导致变量长度不一样的错误? 我是否需要以不同的方式子集来创建矩阵? 然后用mapply? 我可以这样做并同时保留变量名和观察结果吗? 或者有没有办法使用我制作的 object 进行循环? 我错了吗? 如果是这样,可能是什么问题?

另外请注意,我试图遍历 100 多个预测变量。 我计划添加其他不会循环的预测变量。 但我只是想让循环先工作。

在您的 function 中,X 是列的名称,而不是列中的值。 尝试

glm(as.formula(paste0("hpresponse1~",X)), ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM