我目前有以下回归模型:
> print(summary(step1))
Call:
lm(formula = model1, data = newdat1)
Residuals:
Min 1Q Median 3Q Max
-2.53654 -0.02423 -0.02423 -0.02423 1.71962
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.3962 0.0532 7.446 2.76e-12 ***
i2 0.6281 0.0339 18.528 < 2e-16 ***
我想将以下内容作为数据框返回:
Estimate Std. Error t value Pr(>|t|)
i2 0.6281 0.0339 18.528 < 2e-16
我目前有以下代码:
> results1<-as.data.frame(summary(step1)$coefficients[-1,drop=FALSE])
哪个收益率:
> results1
summary(step1)$coefficients[-1, drop = FALSE]
1 6.280769e-01
2 5.320108e-02
3 3.389873e-02
4 7.446350e+00
5 1.852804e+01
6 2.764836e-12
7 2.339089e-45
因此不是我想要的;但是,当有超过1个预测变量时,它确实有效。
答案 0 :(得分:4)
如果你给出了一个可重复的例子,那就太好了。我认为你正在寻找
cc <- coef(summary(step1))[2,,drop=FALSE]
as.data.frame(cc)
使用coef(summary(.))
而不是summary(.)$coefficients
等访问器更漂亮,更健壮(无法保证summary()
的内部结构保持不变 - 尽管如此&# 39; R的这个基本部分很可能不会很快改变,特别是因为很多用户可能已经使用了$coefficients
这样的结构。
按名称索引行,即
coef(summary(step1))["i2",,drop=FALSE]
可能会更好。
答案 1 :(得分:2)
summary(step1)$coefficients
是一个矩阵。当您使用[-1, drop=FALSE]
取出第一个元素时,它会转换为向量,这就是为什么您得到7个数字而不是您想要的行。
> set.seed(123)
> x <- rnorm(100)
> y <- -1 + 0.2*x + rnorm(100)
> step1 <- lm(y ~ x)
> class(summary(step1)$coefficients)
[1] "matrix"
> class(summary(step1)$coefficients[-1, drop=FALSE])
[1] "numeric"
解决方案是使用[
更改子集,以便您指定要保留所有列(请参阅?`[`):
> summary(step1)$coefficients[-1, , drop=FALSE]
Estimate Std. Error t value Pr(>|t|)
x 0.1475284 0.1068786 1.380336 0.1706238