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.
You can install the GitHub version of projthis with:
# install.packages("remotes")
remotes::install_github("ijlyttle/projthis")
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.
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.