簡體   English   中英

使用 for 循環從多個模型中提取系數

[英]Using a for loop to extract coefficients from multiple models

我有多個 cox 模型(所有模型中都有一個靜態變量),並且正在嘗試提取該變量的系數。

在所有模型中,系數的索引如下:例如,在模型 1 中,它是模型 1[[8]][1]; 對於模型 2,它是模型 2[[8]][1] 等。我試圖創建一個 for 循環,但 R 如下所示,但它不起作用。

有人可以幫助我為什么在運行以下代碼時出現錯誤

for (i in 1:5) {
coef[i] <- exp(summary(model[i])[[8]][1])
}

我收到以下錯誤“找不到對象‘模型’”。

提前謝謝了

一種

這是我在評論中的意思的一個例子

data(iris)
model1 <- lm(data = iris, Sepal.Length ~ Sepal.Width + Species)
model2 <- lm(data = iris, Sepal.Length ~ Sepal.Width)

您可以這樣做,這樣您就不必鍵入所有模型。

model.list<-mget(grep("model[0-9]+$", ls(),value=T))

ls() 列出您擁有的所有對象,而 grep() 正在獲取名稱為“model”的所有對象,后跟一個數字。

coefs<-lapply(model.list,function(x)coef(x)[2])
unlist(coefs)

Sepal.Width Sepal.Width 
 0.8035609  -0.2233611 

這是一個通用示例:

model1 <- 1:5
model2 <- 2:6

我可以執行一個類似於mean的函數來使用 for 循環找到每個向量的平均值:

for(i in 1:2) print(mean(get(paste0('model', i))))
#[1] 3
#[1] 4

有用。 但更標准的方法是使用列表對象。 然后我可以使用內置函數(如sapply執行所需的函數:

lst <- list(model1, model2)
sapply(lst, mean)
#[1] 3 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM