9  R Environments: renv

In R, environments can also be managed by renv, which works with similar principles as conda, and other virtual environment managers, but the commands are different. Detailed documentation for renv, can found at the package website.

renv differs from conda in the way that it adds package dependencies. Briefly, when you prompt renv to create (or update) a file to record the project dependencies (done via renv’s snapshot() function), it recursively crawls the files in the project looking for calls to library() or require().

The key file renv creates for recording and sharing environments is called renv.lock in the project’s root directory. Other files are created in the project’s root directory when you use renv but renv.lock is the file that documents which programming languages and packages (including versions) are used in the project. It is recommended that when sharing an renv environment that you version control renv.lock, .Rprofile and renv/activate.R to facilitate collaboration. When you setup an renv environment with renv::init() it creates a renv/.gitignore file so that files that renv creates and uses locally but are not helpful to share, are not shared.

renv environments work best in the context of RStudio projects - and so it is recommended that you create an RStudio project that corresponds to the root of your data science project repository. If this is not done - renv will crawl files outside of the project, looking for dependencies.

Below we create a table with the general virtual environment commands for renv as well as the equivalent conda command for comparison:

Description renv command conda command
Create a new environment without an environment file renv::init() conda create -n <ENV_NAME> ...
Activate a new environment renv::activate() conda activate <ENV_NAME>
Export environment to a file renv::snapshot() conda env export --from-history -f environment.yml
Create a new environment from an environment file renv::restore() conda env create --file environment.yml