renv可以用来创建一个特定版本R的虚拟环境吗?

11

我最近安装了R 4.0,此前曾使用R 3.6.3。我使用的是Rstudio(当前版本为1.2.5042,运行在Windows 10机器上)来管理R代码库。升级到R 4.0后,我打开了几个月前创建的一个项目,发现Rstudio现在默认使用新版本的R(以及它的库文件夹)。当运行renv::restore()时,renv会尝试重新安装所有在.lock文件中与新版本R相应的库,并且我找不到任何指定继续使用R 3.6.3及其相关库的方法。

因为之前我有Python的经验,所以认为renv会创建一个虚拟环境,隔离项目所使用的解释器和库(类似于anaconda环境的创建方式)。然而,在查阅了文档并进行了一些搜索后,我没有找到关于隔离特定版本R的任何参考资料。不过,我发现Rstudio默认使用最新的R版本,这不一定是我想要的行为。

我尝试使用Anaconda来管理R环境。但是,Anaconda依赖于其自己更小的R软件包仓库,并且我需要使用的许多库都存储在GitHub上的研究者的代码中。

有没有一种方法可以创建一个R环境,使得我可以隔离R库和R本身的版本?或者,也许我在如何使用R/Rstudio环境方面缺少了什么信息?


你可以在全局选项中更改Rstudio打开的R版本。这样行吗?这里有一个关于此问题的讨论:https://github.com/rstudio/renv/issues/254 - Phil
感谢你引导我来到这个讨论,Phil。它完全反映了我的问题。从提供的答案来看,似乎renv无法管理不同版本的R。他们列出了一些解决方法,包括使用shell脚本、类似docker的r包(rocker)和其他一些外部选项。我可以更改全局选项,但是在单个Rstudio安装中,切换项目会很具有挑战性,并且共享也很具有挑战性。如果有其他选项,我很愿意听取建议。 - Matt
1个回答

7

您说得对,renv 只管理已安装的 R 包,而不是 R 解释器本身。

根据您使用 RStudio 的方式,您仍然可以通过设置 RSTUDIO_WHICH_R 环境变量来“模拟”这一点。例如:

export RSTUDIO_WHICH_R=/path/to/R
rstudio

该命令会告诉RStudio使用由RSTUDIO_WHICH_R环境变量指定的R版本。

值得一提的是,将项目绑定到特定的R版本是RStudio专业版的功能;然而,在开源版本中不可用。更多详情请参见这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接