簡體   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