Rhino relies on {renv} to manage the R package dependencies of your project. With {renv} you can create an isolated package library for each application and easily restore it on a different machine using the exact same package versions. This is crucial for the maintainability of any project.

To learn more about {renv} visit its website. This article describes the specifics of how Rhino uses {renv} assuming some basic familiarity with the package.

Snapshot types

{renv} offers different snapshot types. By default it performs an implicit snapshot: it tries to detect the dependencies of your project by scanning your R sources. While convenient in small projects, this approach lacks fine control and can be inefficient in larger code bases.

It would be preferable to use explicit snapshots: the dependencies of your project must be listed in a DESCRIPTION file. Unfortunately we faced some issues with this snapshot type in deployments. Instead, Rhino uses the following setup:

  1. Implicit snapshot (configured in renv/settings.dcf).
  2. A dependencies.R file with dependencies listed explicitly as library() calls.
  3. A .renvignore file which tells {renv} to only read dependencies.R.

This solution offers us the benefits of explicit snapshots (fine control, efficiency) and works well in deployment.

For practical instructions on managing R package dependencies in Rhino check out the How-to: Manage R dependencies article.



kamilzyla/rhino documentation built on May 1, 2022, 7:34 a.m.