我有一個模型摘要列表(假設它是線性模型;但是這可能適用於任何模型摘要)。R:使用模式匹配從模型摘要列表中提取值
目前,我使用摘要此列表中提取一定的係數如下:
coef <- sapply(modelsummaries, function(x) x[[4]][[4,1]])
我怎麼會通過調用變量名,而不是依賴於行位置做到這一點?
對於列表中的每個模型摘要,只有一個變量不同,命名爲V_01,V_02,V_03等。這是我想提取的變量係數。
我想用grep的功能,類似的:
coef <- sapply(modelsummaries, function(x) x[[4]][[grep("^[V]"),1]])
...但沒有得到它的工作。有什麼建議麼?
這裏有一個重複的例子(只需要在最後一行進行調整):
newdata <- as.data.frame(seq(from = 0.1, to = 0.9, by = 0.1))
newdata <- as.data.frame(t(newdata))
colnames(newdata) = newdata[1, ]
colnames(newdata) <- paste("V", colnames(newdata), sep = "_")
mtcars <- mtcars
mtcarsmodel <- data.frame(mtcars, newdata)
mtcarsmodel[c(12:20)] <- sample(1:100, 288, replace=TRUE)
xnam <- paste(colnames(mtcarsmodel)[c(4:5)], sep="")
xnam2 <- paste(colnames(mtcarsmodel)[c(12:20)], sep="")
fmla <- paste(xnam, collapse= "+")
fmla2 <- paste(paste(fmla), "+")
fla <- paste("mpg ~", paste(fmla2))
models <- lapply(setNames(xnam2, xnam2), function(var) {
form = paste(fla, var)
lm(form, data=mtcarsmodel)
})
modelsummaries <-lapply(models, summary)
coef <- sapply(modelsummaries, function(x) x[[4]][[4,1]])
'[[''只允許一次選擇一個元素。如果你的grep導致一個col,你可以使用'grep(pattern,names(x [[10]]))'來獲得數字。請參閱'?grep','?names','?\'[[\''等。 – Frank
最好掀起一個模擬結果結構的示例。 – lmo
附上一個例子 – SlyGrogger