【问题标题】:concurrent install of git multiple branches of an R package with `devtools::install_github()`使用 `devtools::install_github()` 同时安装 R 包的 git 多个分支
【发布时间】:2026-02-08 22:45:02
【问题描述】:

正如标题所述:是否可以在同一个 R 环境中并排安装同一个包的多个 git 分支?我想做一些基准测试,在同一会话中比较两个分支会更容易。我认为一种解决方法是在新分支的DESCRIPTION文件中更改包名称,但有没有更聪明的方法来使用devtools

示例代码:

devtools::install_github("mkoohafkan/RAStestR", ref = "master")
# overwrites the prior install
devtools::install_github("mkoohafkan/RAStestR", ref = "hdf5r_transition")

【问题讨论】:

    标签: r git devtools


    【解决方案1】:

    简而言之,没有。至少不是没有额外的层。继续阅读。

    虽然git(协议和客户端)支持类似于虚拟文件系统的“分支”,允许您轻松切换,但 R 不支持。

    对于您安装的每个软件包,只能安装一个版本。

    但不要绝望,因为文件系统可以作为后端,然后R可以通过调整库路径进行切换。这一切都在help(Startup) 中,但明确一点可能会有所帮助。

    你能做什么(我在这里模拟一下)

    mkdir master; cd master; installFromBranch.R master; cd ..
    mkdir featureA; cd featureA; installFromBranch.R featureA; cd ..
    mkdir featureB; cd featureA; installFromBranch.R featureB; cd ..
    

    然后在 R 中使用,比如说,

    .libPaths("master"); library("mypackage")
    

    或者如果你想要一个功能

    .libPaths("featureA"); library("mypackage")
    

    你也可以使用R_LIB_USER=featureA Rscript -e '.....someCommandHere...'

    简而言之:将分支映射到您安装的目录,并告诉R这些目录。

    【讨论】:

    • 有趣的解决方案 --- 但看起来这将允许我使用 任何一个 版本,但不能同时使用两个版本。有没有办法为加载的其中一个包设置别名?
    • 没有。正如我一开始所说,R 只知道每个包的一个版本,因此您至少必须使用我所描述的内容通过两个不同 R 会话进行比较。这就是 R 的组织方式。