(The examples here are derived from a broom’s vignette)

Yes, I love plain texts. They are plain and simple. I know.

But sometimes they are too plain and overly simple.

lmfit <- lm(mpg ~ wt, mtcars)
lmfit
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Coefficients:
## (Intercept)           wt  
##      37.285       -5.344
summary(lmfit)
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

broom can tidy up it to data.frame, which means now we can easily print prettier with some function like knitr::kable()

library(broom)
library(magrittr)

library(knitr)
tidy(lmfit) %>% kable
term estimate std.error statistic p.value
(Intercept) 37.285126 1.877627 19.857575 0
wt -5.344472 0.559101 -9.559044 0
glance(lmfit) %>% kable(caption = "Table 2", digits = 3)
Table 2
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual
0.753 0.745 3.046 91.375 0 2 -80.015 166.029 170.427 278.322 30
library(DT)
head(augment(lmfit)) %>% datatable