The projthis package offers a framework for analysis-based project workflows. You can use it to:

  • manage the dependencies among files in your workflows; projthis provides tools to support a directory structure and a naming convention.

  • manage your project’s package-dependencies; projthis helps you use a DESCRIPTION file.

  • automate the rendering of your workflow using GitHub Actions; projthis provides a template for an Action.

The getting-started article provides a bottom-up treatment of what this package does; for a top-down overview, see the design-philosophy article.

To see the projthis framework in action, here’s a repository that puts it to use.

Installation

You can install the GitHub version of projthis with:

# install.packages("remotes")
remotes::install_github("ijlyttle/projthis")

Acknowledgments

There is precious little original to this package, which is a good thing. This package rests heavily on the foundation laid by RStudio’s usethis package, and also relies on their renv, desc, remotes, and actions packages. Of course, the gold-standard for managing dependencies within a workflow is William Landau’s drake, now superseded by targets. For managing package-dependencies, you may also be interested in ThinkR’s attachment package.

The idea to put some structure on analysis development in R is not new:

  • I learned the term “analysis development” from Hilary Parker, who has published a pre-print, and given an rstudio::conf() presentation on the topic.

  • Jenny Bryan has long been an advocate for more-humane organization of R workflows. Perhaps her most famous “hot take” is included in this blog post, which has served as a foundation for this work.

  • Sharla Gelfand has discussed her implementation in a blog post and an rstudio::conf() presentation.

  • As well, Emily Reiderer discussed her approach in a blog post and an rstudio::conf() presentation.

  • Steph Locke and Maëlle Salmon offer the starters package, to help you set up R projects for a variety of use cases.

Code of Conduct

Please note that the projthis project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.