Use Conda in RStudio

For those use cases where an R project depends on some Python packages it is possible to integrate a local installation of Conda directly into the RStudio app. This integration is done via the renv and reticulate packages of R.

In the following example, the Miniconda installation directory, say miniconda3, is mounted inside an instance of RStudio. In order to use Conda, the conda binary must be added to the search path from the RStudio terminal interface:

$ sudo ln -s /work/miniconda3/bin/conda /usr/bin/conda

As a first step one must create a new Conda environment, called py_env, which includes a Python package, e.g. numpy:

$ conda create -n py_env numpy

Optionally, one can activate the environment to install additional packages with the commands:

$ conda init && bash -i

and

$ conda activate py_env

Next, it is necessary to create a new folder to install the R project which has to be integrated with the Conda environment created earlier:

$ mkdir /work/my_project

Finally, the R project is initialized directly in the RStudio console:

setwd('/work/my_project')
renv::init()
Sys.setenv(RENV_PATHS_CACHE = '/work/my_project/renv/cache')
renv::use_python(type = 'conda', name = 'py_env')

where the renv::use_python function takes as argument the name of the Conda environment. The content of my_project is available in the job output folder for later use, after the RStudio instance is stopped.

To check that the renv environment is correctly configured, one can run the following commands:

library('reticulate')
np <- import('numpy')
np$arange(10)

To automate this workflow in a new RStudio instance, the user must add both the Miniconda and R project folders and use the optional Dependencies parameter to run a configuration script, such as the following:

#!/bin/bash

sudo ln -s /work/miniconda3/bin/conda /usr/bin/conda

echo "Sys.setenv(RENV_PATHS_CACHE = '/work/my_project/renv/cache')" > ~/.Rprofile

echo "renv::load(project = '/work/my_project')" >> ~/.Rprofile

printf "Done.\n"