Nice reproducible example! From everything I can see here, the only differences are in output representation, not in the underlying values.
In the printed summary output, p-values less than a threshold are printed only as "<2.2e-16" (on the theory that you probably shouldn't be worrying about differences among tiny p-values anyway ...)
fit_summary #output1
Df Wilks approx F num Df den Df Pr(>F)
Species 2 0.023439 199.15 8 288 < 2.2e-16 ***
Residuals 147
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
If you explicitly extract the $stats
component, then you get a value printed to R's default 7-digit precision:
> fit_summary$stats #output2
Df Wilks approx F num Df den Df Pr(>F)
Species 2 0.02343863 199.1453 8 288 1.365006e-112
Residuals 147 NA NA NA NA NA
If you use tidy
, it returns a tibble rather than a data frame, which has a different set of defaults for output precision (i.e., it only reports 3 significant digits).
> broom::tidy(fit, test = "Wilks")
# A tibble: 2 x 7
term df wilks statistic num.df den.df p.value
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Species 2 0.0234 199. 8 288 1.37e-112
2 Residuals 147 NA NA NA NA NA
All of these defaults can be reset: for example, ?tibble::formatting
tells you that options(pillar.sigfig=7)
will set the significant digits for tibble-printing to 7; ?options
tells you that you can use options(digits=n)
to change the defaults for base-R printing.