[英]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.