为不在 CRAN 上的 R 包设置 conda 环境,安装到错误的位置

Set up conda environment for R package not on CRAN, installs to wrong location

我的目标是使用这个包 (https://github.com/tiagodc/TreeLS) but it was deprecated from CRAN (https://cran.r-project.org/web/packages/TreeLS/index.html)。它需要旧版本的 R,但它的依赖项(例如 raster 包)需要 R 3.5 或更高版本。我考虑了两种方法。

  1. 使用 R studio 并将全局选项更改为较旧版本的 R,但我经常使用许多地理空间包,并且由于此包具有较旧的依赖项,所以我不想安装我一直使用的较旧版本的包.
  2. 在 Mini Conda 3 中创建一个专用于此包的虚拟环境。我选择这个选项是因为它是独立的。

这是目前的工作流程。

conda search -c r r
conda create -n newR351 -c conda-forge r-base=3.5.1 -y
conda install -c r rtools -y

成功创建一个名为 newR351 的 conda 环境,并将 r 工具安装到 mini conda 3 中的该环境文件夹中。

安装 R 3.5.1 的 conda 环境的位置

C:\Users\me\Miniconda3\envs\newR351

当我尝试安装 devtools 以便我可以从 github 远程安装 TreeLS 时,我收到一条退出状态为零的警告。 devtools 包安装,但它安装到我的 appdata 文件夹而不是我的迷你 conda 环境。

conda install -c r devtools -y

The downloaded source packages are in
    'C:\Users\me\AppData\Local\Temp\RtmpYByvp8\downloaded_packages'

如何在我的 conda 环境 newR351 上访问开发工具?我需要建造一个颅骨骨架吗?当我在此环境中激活 R 并尝试加载 devtools 库时,我得到了这个。

(newR351) C:\Users\me>R
R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

...

>library(devtools)
Error in library(devtools) : there is no package called 'devtools'

创建特定于旧版 R 包的环境的最佳做法是什么?还有其他人使用 TreeLS 吗?

首先,devtools 没有出现,因为 Conda 存储库中的 R 包通常以“r-”为前缀,因此安装 conda install r-devtools 应该可以解决问题。但是,我认为 Conda 不是这里最好的策略。

在 R 版本 3.6 以下,R 包的 Conda 包覆盖率相当低。此外,根据我的经验,将需要编译的 non-Conda 包安装到 Conda R 环境中是一件痛苦的事情,而且通常不起作用 out-of-the-box。另外,不仅 TreeLS 需要编译,而且它具有不是需要编译的 Conda 包的依赖项。我会避免这种情况。

方案一可行。 R 允许多个安装,并且可以通过操作环境变量(我认为 RSTUDIO_WHICH_RR_LIBS 是相关的)可以在它们之间切换。

但是,如果这是我的情况,我会启动一个 docker 容器,可能 rocker/rstudio:3.5 并将其用于该项目。由于底层图像是 Linux,编译需要一段时间,但您可以在那个时候对其进行版本控制,然后始终可以启动它。这避免了必须处理任何系统设置,并且应该主要是 straight-forward 安装。