gpt4 book ai didi

r - 使用某种 bind() 函数创建带有嵌套模型系数的 data.frame?

转载 作者:行者123 更新时间:2023-12-02 00:19:09 25 4
gpt4 key购买 nike

我想我有个好主意,但不知道如何实现。我目前正在运行许多嵌套模型。例如:

y<-c(1, 0, 1, 1, 1, 1, 1, 1, 0)
x1<-c(1, 0, 9, 9, 1, 9, 2, 1, 0)
x2<-c(1, 2, 3, 5, 4, 2, 4, 5, 1)
x3<-c(1, 2, 1, 4, 1, 3, 4, 8, 3)

model1 <-lm(y~x1)
model2 <-lm(y~x1+x2)
model3 <-lm(y~x1+x2+x3)

model1_output<-(summary(model1 )$coefficients[1])
model2_output<-(summary(model1 )$coefficients[1])
model3_output<-(summary(model1 )$coefficients[1])

然后我想将我所有的输出放在一个数据表中,该数据表与行(变量名称)匹配,但将新系数插入到它们自己的列中。我希望 data.frame 将我的示例的输出呈现为:

             b(Model 1)  b(Model 2) b(Model 3)
(Intercept) 0.59217 0.2555 0.27983
x1 0.05220 0.04116 0.0375
x2 NA 0.12530 0.15142
x3 NA NA -0.02994

我确信一定有一些聪明的方法可以使用 plyr() 包(或其他一些包!)来做到这一点,但似乎无法弄清楚。谢谢!

最佳答案

使用这个 answer来自另一个问题:

cbind.fill<-function(...){
nm <- list(...)
nm<-lapply(nm, as.matrix)
n <- max(sapply(nm, nrow))
do.call(cbind, lapply(nm, function (x)
rbind(x, matrix(, n-nrow(x), ncol(x)))))
}

你可以这样做:

do.call(cbind.fill,lapply(list(model1,model2,model3),function(x){coef(x)}))

[,1] [,2] [,3]
(Intercept) 0.59216966 0.25551154 0.27982881
x1 0.05220228 0.04116431 0.03754457
NA 0.12530141 0.15142340
NA NA -0.02993768

然后手动设置行名和列名。 (请注意,如果这对您很重要,这将返回一个矩阵,而不是数据框。)

关于r - 使用某种 bind() 函数创建带有嵌套模型系数的 data.frame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11692475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com