knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
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.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.