Proper formatting of statistical results in accordance with the American Psychological Association (APA) Manual (sixth edition), along with convenient helpers for summaries, confidence intervals, and plotting. Development repository: < https://github.com/achetverikov/APAstats>.
Utilities for APA-style reporting of statistical results, plus helper functions for confidence intervals, summaries, and plotting.
install.packages("remotes")
remotes::install_github("achetverikov/apastats")
library(apastats2)
t_res <- t.test(rnorm(20, mean = 10, sd = 2))
apa(t_res)
How the results look when the Markdown strings are rendered in R Markdown or Quarto:

Source: example/readme_output.Rmd (built-in R datasets).
apa(): formatted output for many model/test objects via S3 methodsapa_*: APA-formatted means, confidence intervals, test statisticsget_adjusted_ci(): confidence intervals/SEs for between-subject, within-subject, and mixed designsplot_pointrange(): point-range plotting using the same adjusted-interval engineround_p(), f_round(), drop_empty_cols(), etc.)?apa, ?apa_mean_conf, etc.vignette("apastats2-intro", package = "apastats2")Some advanced methods rely on suggested packages (for example ez, lme4, and emmeans).
If you are migrating old scripts:
remotes::install_github("achetverikov/apastats")
library(apastats2)
apa() and apa_* functions in new code.describe.* functions still work for now, but are deprecated and planned for removal.In most cases, replacing library(apastats) with library(apastats2) and then progressively updating deprecated calls is enough.
Legacy describe.* wrappers are deprecated and will be removed in the next release.
Use the following replacements:
describe.ttest() -> apa() (for t.test objects)describe.r() -> apa() (for cor.test objects)describe.chi() -> apa() (for chisq.test objects)describe.glm() -> apa() (for glm/lm objects)describe.mean.sd() -> apa_mean_sd()describe.mean.conf() -> apa_mean_conf()describe.binom.mean.conf() -> apa_binom_mean_conf()describe.mean.and.t() -> apa_mean_and_t()Additional deprecated compatibility mapping:
get_superb_ci() -> get_adjusted_ci()For utility helpers, snake_case aliases are now available and dot-named forms are legacy:
mean.nn() -> mean_nn()sd.nn() -> sd_nn()sum.nn() -> sum_nn()drop.empty.cols() -> drop_empty_cols()binom.ci() -> binom_ci()f.round() -> f_round()load.libs() -> load_libs()lmer.fixef() -> lmer_fixef()omit.zeroes() -> omit_zeroes()base.breaks() -> base_breaks()base.breaks.x() -> base_breaks_x()base.breaks.y() -> base_breaks_y()plot.pointrange() -> plot_pointrange()If you need the pre-apastats2 code, install from the legacy branch/tag:
remotes::install_github("achetverikov/apastats@legacy-apastats")