{"id":13857801,"url":"https://github.com/easystats/report","last_synced_at":"2025-05-14T08:05:45.876Z","repository":{"id":36344471,"uuid":"166796014","full_name":"easystats/report","owner":"easystats","description":":scroll: :tada: Automated reporting of objects in R","archived":false,"fork":false,"pushed_at":"2025-05-01T01:50:41.000Z","size":19887,"stargazers_count":703,"open_issues_count":109,"forks_count":70,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-05-03T10:01:40.542Z","etag":null,"topics":["anovas","apa","automated-report-generation","automatic","bayesian","describe","easystats","hacktoberfest","manuscript","models","r","r-package","report","reporting","reports","rstats","scientific","statsmodels"],"latest_commit_sha":null,"homepage":"https://easystats.github.io/report/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easystats.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"easystats"}},"created_at":"2019-01-21T10:35:49.000Z","updated_at":"2025-04-18T09:26:12.000Z","dependencies_parsed_at":"2023-02-19T11:01:06.703Z","dependency_job_id":"ee14f618-9c43-4ef6-b4b2-e257800a43a9","html_url":"https://github.com/easystats/report","commit_stats":{"total_commits":882,"total_committers":46,"mean_commits":19.17391304347826,"dds":0.6281179138321995,"last_synced_commit":"63fe4371924d437c478850a31d5e1ad7cca04a3a"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easystats%2Freport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easystats%2Freport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easystats%2Freport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easystats%2Freport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easystats","download_url":"https://codeload.github.com/easystats/report/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254095259,"owners_count":22013736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anovas","apa","automated-report-generation","automatic","bayesian","describe","easystats","hacktoberfest","manuscript","models","r","r-package","report","reporting","reports","rstats","scientific","statsmodels"],"created_at":"2024-08-05T03:01:47.345Z","updated_at":"2025-05-14T08:05:40.867Z","avatar_url":"https://github.com/easystats.png","language":"R","readme":"---\noutput: github_document\n---\n\n# report \u003cimg src='man/figures/logo.png' align=\"right\" height=\"139\" /\u003e\n\n```{r, message=FALSE, warning=FALSE, echo=FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  dpi = 300,\n  fig.path = \"man/figures/\",\n  comment = \"#\",\n  message = FALSE,\n  warning = FALSE\n)\n\noptions(\n  knitr.kable.NA = \"\",\n  digits = 4,\n  width = 80\n)\n\nlibrary(dplyr)\nlibrary(report)\n```\n\n[![R-CMD-check](https://github.com/easystats/report/workflows/R-CMD-check/badge.svg?branch=main)](https://github.com/easystats/report/actions)\n[![CRAN](http://www.r-pkg.org/badges/version/report)](https://cran.r-project.org/package=report)\n[![r-universe](https://easystats.r-universe.dev/badges/report)](https://easystats.r-universe.dev/report)\n[![downloads](http://cranlogs.r-pkg.org/badges/report)](https://cran.r-project.org/package=report)\n[![total](https://cranlogs.r-pkg.org/badges/grand-total/report)](https://cranlogs.r-pkg.org/)\n[![stars](https://img.shields.io/github/stars/easystats/report?style=social)](https://github.com/easystats/report/stargazers)\n\n***\"From R to your manuscript\"***\n\n**report**'s primary goal is to bridge the gap between R's output and the formatted results contained in your manuscript. It automatically produces reports of models and data frames according to **best practices** guidelines (e.g., [APA](https://apastyle.apa.org/)'s style), ensuring **standardization** and **quality** in results reporting.\n\n```{r}\nlibrary(report)\n\nmodel \u003c- lm(Sepal.Length ~ Species, data = iris)\nreport(model)\n```\n\n## Installation\n\nThe package is available on `CRAN` and can be downloaded by running:\n\n```{r eval=FALSE}\ninstall.packages(\"report\")\n```\n\nIf you would instead like to experiment with the development version, you can\ndownload it from `GitHub`:\n\n```{r eval=FALSE}\ninstall.packages(\"remotes\")\nremotes::install_github(\"easystats/report\") # You only need to do that once\n```\n\nLoad the package every time you start R\n\n```{r}\nlibrary(\"report\")\n```\n\n\u003e **Tip**\n\u003e\n\u003e **Instead of `library(report)`, use `library(easystats)`.**\n\u003e **This will make all features of the  easystats-ecosystem available.**\n\u003e\n\u003e **To stay updated, use `easystats::install_latest()`.**\n\n## Documentation\n\nThe package documentation can be found [**here**](https://easystats.github.io/report/). \n\n## Report all the things \n\n\u003ca href=https://easystats.github.io/report/\u003e\u003cimg src=\"man/figures/allthethings.jpg\" height=\"60\" alt=\"All the things meme by Allie Brosh\" \u003e\u003c/a\u003e\n\n### General Workflow\n\nThe `report` package works in a two step fashion. First, you create a `report` object with the `report()` function. Then, this report object can be displayed either textually (the default output) or as a table, using `as.data.frame()`. Moreover, you can also access a more digest and compact version of the report using `summary()` on the report object.\n\n[![workflow](man/figures/workflow.png)](https://easystats.github.io/report/)\n\nThe `report()` function works on a variety of models, as well as other objects such as dataframes:\n\n```{r, eval=FALSE}\nreport(iris)\n```\n```{r echo=FALSE}\nprint(report(iris), width = 80)\n```\n\nThese reports nicely work within the [*tidyverse*](https://github.com/tidyverse) workflow:\n\n```{r, eval=FALSE}\niris %\u003e%\n  select(-starts_with(\"Sepal\")) %\u003e%\n  group_by(Species) %\u003e%\n  report() %\u003e%\n  summary()\n```\n\n```{r echo=FALSE}\niris %\u003e%\n  select(-starts_with(\"Sepal\")) %\u003e%\n  group_by(Species) %\u003e%\n  report() %\u003e%\n  summary() %\u003e%\n  print(width = 80)\n```\n\n\n### *t*-tests and correlations\n\nReports can be used to automatically format tests like *t*-tests or correlations.\n\n```{r, eval=FALSE}\nreport(t.test(mtcars$mpg ~ mtcars$am))\n```\n\n```{r echo=FALSE}\nt.test(mtcars$mpg ~ mtcars$am) %\u003e%\n  report() %\u003e%\n  print(width = 80)\n```\n\nAs mentioned, you can also create tables with the `as.data.frame()` functions, like for example with this correlation test:\n\n```{r, error=TRUE}\ncor.test(iris$Sepal.Length, iris$Sepal.Width) %\u003e%\n  report() %\u003e%\n  as.data.frame()\n```\n\n### ANOVAs\n\nThis works great with ANOVAs, as it includes **effect sizes** and their interpretation.\n\n```{r, eval=FALSE}\naov(Sepal.Length ~ Species, data = iris) %\u003e%\n  report()\n```\n\n```{r echo=FALSE}\naov(Sepal.Length ~ Species, data = iris) %\u003e%\n  report() %\u003e%\n  print(width = 80)\n```\n\n### Generalized Linear Models (GLMs)\n\nReports are also compatible with GLMs, such as this **logistic regression**:\n\n```{r, eval=FALSE}\nmodel \u003c- glm(vs ~ mpg * drat, data = mtcars, family = \"binomial\")\n\nreport(model)\n```\n\n```{r echo=FALSE}\nglm(vs ~ mpg * drat, data = mtcars, family = \"binomial\") %\u003e%\n  report() %\u003e%\n  print(width = 80)\n```\n\n### Mixed Models\n\nMixed models, whose popularity and usage is exploding, can also be reported:\n\n```{r, eval=FALSE}\nlibrary(lme4)\n\nmodel \u003c- lme4::lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris)\n\nreport(model)\n```\n\n```{r echo=FALSE}\nlibrary(lme4)\n\nlme4::lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) %\u003e%\n  report() %\u003e%\n  print(width = 80)\n```\n\n\n### Bayesian Models\n\nBayesian models can also be reported using the new [**SEXIT**](https://easystats.github.io/bayestestR/reference/sexit.html) framework, which combines clarity, precision and usefulness.\n\n```{r, eval=FALSE}\nlibrary(rstanarm)\n\nmodel \u003c- stan_glm(mpg ~ qsec + wt, data = mtcars)\n\nreport(model)\n```\n\n```{r echo=FALSE}\noptions(mc.cores = parallel::detectCores())\nlibrary(rstanarm)\n\nmodel \u003c- stan_glm(mpg ~ qsec + wt, data = mtcars, refresh = 0, iter = 1000) %\u003e%\n  report() %\u003e%\n  print(width = 80)\n```\n\n## Other types of reports\n\n### Specific parts\n\nOne can, for complex reports, directly access the pieces of the reports:\n\n```{r}\nmodel \u003c- lm(Sepal.Length ~ Species, data = iris)\n\nreport_model(model)\n\nreport_performance(model)\n\nreport_statistics(model)\n```\n\n### Report participants' details\n\nThis can be useful to complete the **Participants** paragraph of your manuscript.\n\n```{r, eval=FALSE}\ndata \u003c- data.frame(\n  \"Age\" = c(22, 23, 54, 21),\n  \"Sex\" = c(\"F\", \"F\", \"M\", \"M\")\n)\n\npaste(\n  report_participants(data, spell_n = TRUE),\n  \"were recruited in the study by means of torture and coercion.\"\n)\n```\n\n```{r echo=F}\ndata \u003c- data.frame(\n  \"Age\" = c(22, 23, 54, 21),\n  \"Sex\" = c(\"F\", \"F\", \"M\", \"M\")\n)\n\npaste(\n  report_participants(data, spell_n = TRUE),\n  \"were recruited in the study by means of torture and coercion.\"\n) |\u003e\n  insight::format_message() %\u003e%\n  cat()\n```\n\n### Report sample\n\nReport can also help you create a sample description table (also referred to as **Table 1**).\n\n```{r, eval=FALSE}\nreport_sample(iris, by = \"Species\")\n```\n\n```{r, echo=FALSE}\nknitr::kable(report_sample(iris, by = \"Species\"))\n```\n\n### Report system and packages\n\nFinally, **report** includes some functions to help you write the data analysis paragraph about the tools used.\n\n```{r, eval=FALSE}\nreport(sessionInfo())\n```\n\n```{r echo=FALSE}\nreport(sessionInfo()) %\u003e%\n  print(width = 80)\n```\n\n## Credits\n\nIf you like it, you can put a *star* on this repo, and cite the package as follows:\n\n```{r, citation, comment=\"\"}\ncitation(\"report\")\n```\n\n## Contribute\n\n***report* is a young package in need of affection**. You can easily be a part of the [developing](https://github.com/easystats/report/blob/master/.github/CONTRIBUTING.md) community of this open-source software and improve science! Don't be shy, try to code and submit a pull request (See the [contributing guide](https://github.com/easystats/report/blob/master/.github/CONTRIBUTING.md)). Even if it's not perfect, we will help you make it great!\n\n## Code of Conduct\n\nPlease note that the report project is released with a [Contributor Code of Conduct](https://easystats.github.io/report/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.\n","funding_links":["https://github.com/sponsors/easystats"],"categories":["R"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasystats%2Freport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasystats%2Freport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasystats%2Freport/lists"}