通过 environment.yml 文件使用 conda 安装 R 包

Install R packages using conda via an environment.yml file

通常我会创建 conda 环境,例如...

conda env create -f environment.yml
conda activate env_name

通常我在 Python 工作,其中典型的 environment.yml 简单文件可能如下所示...

name: env_name
dependencies:
  - python=3.7
  - pip=19.3
  - pandas=0.24.2
  - pip:
    - scipy==1.2.1

安装 R 包的 environment.yml 文件应该是什么样的?包裹在 CRAN

一般的经验法则是,大多数 R 包在 Anaconda Cloud 中都有相应的包,并添加了前缀 r-。虽然 defaults 频道涵盖了常用的软件包,但 conda-forge 频道对 CRAN 的覆盖最彻底,并且有 helpful scripts for adding new ones。我通常建议在创建 R 环境时优先考虑 conda-forge

对于生物信息学家,所有 Bioconductor 包都可以通过 bioconda 频道获得,带有 bioconductor- 前缀和小写字母。例如 SingleCellExperiment 被打包为 bioconductor-singlecellexperiment.

一个很好的起点就是搜索 Anaconda Cloud (example search)。

例子

假设您需要 tidyverse 伞包并希望使用 R v4.1。为此的 YAML 将是

name: my_r_env
channels:
 - conda-forge
dependencies:
 - r-base=4.1
 - r-tidyverse

补充说明

避免在任何 R 会话中使用 install.packages() - 由于 R 实例不知道在环境中编译,因此很容易出现动态链接问题。这对于纯 R 包来说不是问题,但在那种情况下,将包添加到 conda-forge 应该很简单(需要大约 15 分钟的工作和 ~12-24 小时的周转时间, 输入法)。

避免使用来自 Conda 的 RStudio 包 - 它是一个废弃的项目,旧版本与较新的 R 版本不兼容。这可能会更改一次 RStudio switches from Qt to Electron. Still, 以将环境加载到 RStudio 中,而无需在环境中安装完整的 IDE