[renv, package, environment, dependencies, management, R, Packrat, alternative, R projects, portability, reproducibility, dependency management]


Overview

renv is an essential dependency management tool designed specifically for R projects. Its primary role is to ensure reproducibility of environments across different computers or platforms.

By delving into this guide, you will:

  • Gain a clear insight into the purpose, features, and setup process of renv for R project package management.
  • Receive an introduction to other notable R dependency tools.

Environment management for R projects with renv

As a package management tool, renv helps to make projects:

  • Isolated : installing or updating a certain package in one project doesn’t affect other packages from other projects.
  • Portable : projects can easily be transferred to different devices.
  • Reproducible : renv makes it easy to reproduce projects by recording all package versions of each project.

Workflow

1. Install renv

First thing we need to do is to install the renv package.

install.packages("renv")

2. Initialize new project environment

Then we can move to initializing the local environment of the project. We can do that with the following command:

renv::init() 

3. Install/remove packages

After initializing the project, we can install or remove packages from it:

#install packages
install.packages()
#or
renv::install()

#remove packages
remove.packages()
#or
renv::remove()

4. Save library of project in lockfile

After configuring the project, we should save the configuration into a lockfile, in which all packages versions are recorded.

renv::snapshot()

We can also check the status of the library with:

renv::status()

If we continue to make changes to the packages after making the lockfile, but then we would like revert to the previous state (as recorded in the lockfile), we can use:

renv::restore()

Directory overview

After running all the commands above, the directory in which the project was created should contain the following files:

Our project would look like this

File Usage
.Rprofile File that activates renv for the new R sessions
renv.lock The created lockfile containing all packages and versions
renv/activate.R Activation script run by .Rprofile
renv/library Private project library
renv/settings.json Project settings
Tip

Another Project in Rstudio?

When creating a new project in RStudio, you have the option to directly integrate renv.

Select the checkbox to intregate renv

To ensure renv is part of your project environment, simply select the “Use renv with this project” checkbox. This way, RStudio will automatically configure the necessary settings for renv.

Given this automatic setup, you can skip step 1 from the workflow mentioned above.

Alternative R Dependency Management Options

The R community offers multiple tools to manage dependencies and reproducibility. While renv stands out due to its features, other tools have historically been used or still offer specific features that might be appealing to some users.

Packrat

Packrat is an earlier solution for managing project-specific R libraries. It helps isolate projects and make them more reproducible by ensuring that each project’s library is separate.

Nonetheless, while packrat was widely used, it has some limitations which renv has aimed to address. Furthermore, while it is still maintained, there will be no new development for it. This presents renv as a better alternative.

Tip

From Packrat to Renv

To switch from packrat to renv, use renv::migrate() to migrate projects.

Groundhog

groundhog is another R package that facilitates project reproducibility. Unlike renv which maintains records of package versions specific to each project, groundhog requires users to manually load libraries by specifying a date to fetch the version available at that time.

This can be challenging, as users have to recall the specific dates when certain versions were available. On the other hand, renv conveniently loads all necessary packages in one go, making the overall process smoother.

Summary

renv workflow diagram

  • renv is a tool tailored for R projects to ensure the reproducibility of environments across various systems. This is achieved by isolating projects, making them portable, and preserving package versions for each project.

  • The typical workflow includes installing renv, initializing the project environment, managing packages, and saving configurations in a lockfile. RStudio offers integrated renv support for new projects.

  • Besides renv, the R community has other tools like packrat and groundhog. While packrat was a precedent to renv and has ceased new developments, groundhog offers a date-specific approach to fetch package versions.

Additional Resources

Contributed by Ana Bianca Luca