在R虚拟环境?


73

我发现了一些有关R中最佳实践,可重复性和工作流程的帖子,例如:

从代码移动到新机器(可能运行不同的OS)相对简单并且给出相同结果的意义上来说,主要的工作之一就是确保代码的可移植性。

来自Python背景,我习惯了虚拟环境的概念。与所需软件包的简单列表一起使用时,这可以确保安装的软件包和库在任何计算机上都可用,而不会引起太多麻烦。当然,这不能保证-不同的操作系统都有自己的缺点和特点-但这可以为您提供95%的解决方案。

R中是否存在这样的东西?即使它不那么复杂。例如,仅维护必需软件包的纯文本列表以及将安装所有缺失软件包的脚本?

我即将开始认真使用R,可能与Sweave结合使用,并且理想情况下,我希望以最佳方式开始!感谢您的想法。


4
好问题。我投票赞成将其迁移到SO。该问题没有统计内容,因此SO人员可能会为您提供更好的答案。
Momo

4
Renv可能会满足您的需求:github.com/viking/Renv
hrbrmstr 2014年

8
维护软件包列表并将其与系统库隔离是packrat对R的作用:rstudio.github.io/packrat
cboettig 2014年

1
有人应该将答案放在合法答案中,而不是评论。我不知道足够多的R来回答,但是通过查看链接,Renv似乎只管理R的版本,而Packrat的文档听起来更像是virtualenv的匹配项,您可以在同一语言版本中使用具有不同依赖集的相同语言版本项目。
2014年

1
“可能与Sweave结合使用” ---帮自己一个忙knitr,从而不是Sweave开始。
格雷戈尔·托马斯

Answers:


42

我将使用@cboettig发表的评论来解决此问题。

Packrat

Packrat是R的依赖项管理系统。它为您提供三个重要的优点(所有这些优点都针对您的可移植性需求)

  • 隔离:为一个项目安装新的或更新的软件包不会破坏您的其他项目,反之亦然。这是因为packrat为每个项目提供了自己的私有软件包库。

  • 可移植:可以轻松地将项目从一台计算机传输到另一台计算机,甚至可以跨不同的平台进行。Packrat使您可以轻松安装项目所依赖的软件包。

  • 可重现:Packrat记录您所依赖的确切软件包版本,并确保无论您身在何处都可以安装这些确切版本。

下一步是什么?

  1. 演练指南:http : //rstudio.github.io/packrat/walkthrough.html

  2. 最常见的命令:http : //rstudio.github.io/packrat/commands.html

  3. 将Packrat与RStudio结合使用:http ://rstudio.github.io/packrat/rstudio.html

  4. 限制和警告:http : //rstudio.github.io/packrat/limitations.html

更新: Packrat已被弃用,现在已被renv取代,因此您可能需要检查此软件包。


4
Packrat捕获requirements.txt文件中的依赖项然后通过安装的Packrat方法是pip install -r ...什么?
Nick Chammas

我不知道为什么,但是packrat的安装包非常慢。从字面上看,我每次尝试下载新软件包都失去了两天
D_Serg

@Nick这里的文档显示了一个snapshot命令。
迈克·奥康纳

21

Anaconda软件包管理器conda 支持创建R环境

conda create -n r-environment r-essentials r-base
conda activate r-environment

conda在维护不同的Python安装方面有丰富的经验,无论是针对特定用户还是针对同一用户的多个版本。我已经用conda和测试了R,并且jupyter-notebook效果很好。至少满足我的需要,其中包括使用DEseq2和相关软件包以及data.table和进行RNA测序分析dplyrconda通过bioconda提供了许多生物导体包装,根据对此SO问题的评论,似乎也install.packages()可以使用。


我现在也进入了生物信息学领域,因此您的答案变得更加重要!您使用什么IDE?我在将conda集成到Rstudio中时遇到了麻烦-它不想使用正确的解释器路径。
加百利

1
好玩!我使用jupyter-notebook满足大多数需求。我以前曾经使用过Rstudio,但是我记得在使用conda时也遇到了一些麻烦,并且我习惯了python的笔记本(这是到目前为止我最经常使用的工具),因此我感到最舒服。
joelostblom

我的conda R仍在显示我的非conda R的库位置,.libPaths()并试图在那里安装新软件包。export R_LIBS_USER="/path/to/miniconda2/envs/r.3.3/lib/R/library"在启动R并尝试安装软件包之前,我必须在终端中运行。仍在测试中,但看起来像在工作。
user5359531

9

看起来RStudio开发人员还有另一个选择renv。它在CRAN上可用,并取代Packrat。

简而言之,您可以renv::init()用来初始化项目库,并使用renv::snapshot()/renv::restore()保存和加载库的状态。

我喜欢此选项,而不是conda r-enviroments,因为这里所有内容都存储在file中renv.lock,可以将其提交到Git存储库并分发给团队。


1
这个答案绝对应该是我们时代公认的答案。
奥利弗

0

查看roveR,R容器管理解决方案。有关详细信息,请参见https://www.slideshare.net/DavidKunFF/ownr-technical-introduction,尤其是幻灯片12。

要安装roveR,请在R中执行以下命令:

install.packages("rover", repos = c("https://lair.functionalfinances.com/repos/shared", "https://lair.functionalfinances.com/repos/cran"))

要充分利用roveR的功能(包括安装特定版本的软件包以实现可复制性),您将需要访问laiR-对于CRAN,您可以使用https://lair.ownr.io上的laiR实例进行上传您自己的软件包并与您的组织共享,则需要一个Lai许可证。您可以通过上面链接的演示文稿中的电子邮件地址与我们联系。


我觉得这个资源已不存在
哈克-R

是的,幻灯片共享不见了。我无法连接到这个答案两个储存或者,亦不lair.ownr.io
肯·威廉姆斯

抱歉,laiR暂时离线,我们正在努力将其集成到我们的其他产品(ownR平台)中,并将尽快将其重新提供。
David Kun

内容不可用,似乎这不是当前答案
baxx

0

要添加到此:

注意:1.已经安装了Anaconda 2.假设您的工作目录为“ C:”

创建所需的环境->“ r_environment_name”

C:\>conda create -n "r_environment_name" r-essentials r-base

查看可用环境

C:\>conda info --envs

。.. ...

激活环境

C:\>conda activate "r_environment_name"

(r_environment_name) C:\>

启动Jupyter Notebook,让聚会开始

(r_environment_name) C:\> jupyter notebook

对于类似的“ requirements.txt”,也许此链接会有所帮助->是否为R提供了诸如requirements.txt之类的东西?


-1

如果您要做的只是检查您的代码是否可在其他设置上使用,我建议至少通过rstudio cloud(这是免费的)进行测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.