我有一个模型摘要列表(假设它是线性模型;但是这可能适用于任何模型摘要)。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