【发布时间】:2020-12-17 13:39:21
【问题描述】:
我无法让 summary(lm(model) 以科学计数法打印不是 1) 或 b) 有太多小数的数字。
在此问题作为重复问题关闭之前,我已经尝试过此处回答的类似问题中的 scripen() 和 option(digits = x):
- How to disable scientific notation?
- How to make decimal digits of chisq.test four numbers ?
- Force R not to use exponential notation (e.g. e+10)?
我的代码
library(haven)
auto <- haven::read_dta(file = "http://www.stata-press.com/data/r16/auto.dta", .name_repair = "unique")
# Use scale() to create standardised variables
model1_s <- lm(data = auto,
formula = scale(price) ~ scale(mpg))
我希望看到输出显示只有 3 位小数,而不是科学计数法,如下所示:
summary(model1_s)
# Output truncated.
>Coefficients:
> Estimate Std. Error t value Pr(>|t|)
>(Intercept) 0.000 0.103 0.0 1
>scale(mpg) -0.469 0.104 -4.5 0.000 ***
相反,我只能管理:
# Default
summary(model1_s)
> Estimate Std. Error t value Pr(>|t|)
>(Intercept) -8.613e-17 1.034e-01 0.000 1
>scale(mpg) -4.686e-01 1.041e-01 -4.501 2.55e-05 ***
# Changing options
options(digits = 3)
summary(model1_s)
> Estimate Std. Error t value Pr(>|t|)
>(Intercept) -8.61e-17 1.03e-01 0.0 1
>scale(mpg) -4.69e-01 1.04e-01 -4.5 2.5e-05 ***
# Using print and digits = x
print(summary(model1_s), digits = 1)
summary(model1_s)
> Estimate Std. Error t value Pr(>|t|)
>(Intercept) -9e-17 1e-01 0 1
>scale(mpg) -5e-01 1e-01 -4 3e-05 ***
# Using scipen
options(scipen = 100, digits = 3)
summary(model1_s)
> Estimate Std. Error t value Pr(>|t|)
>(Intercept) -0.0000000000000000861 0.1034052818198464840 0.0 1
>scale(mpg) -0.4685966881951871832 0.1041111281150861323 -4.5 0.000025 ***
关于我可以做什么的任何提示?
【问题讨论】:
-
澄清一下,我认为您真正想要的不是打印多个数字,而是四舍五入(对不起,迂腐,但它与方法有所不同)。其次,你真的需要
summary的完整输出吗?如果你只想要系数,那很容易:round(coef(summary(model1_s)), 3) -
感谢您的澄清,您说得对,四舍五入是我的问题。像你展示的那样使用 round(coef ...) 是一个很好的解决方法,但我真的很想显示整个摘要。我想我可以做
model1_s$coefficients <- round(model1_s$coefficients, 3) summary(model1_s)这让我很接近。但是有没有我可以应用到摘要或打印以更简单的方法的选项?
标签: r