R的虚拟环境?

Gab*_*iel 55 python r

我在R中找到了几篇关于最佳实践,再现性和工作流程的帖子,例如:

其中一个主要关注点是确保代码的可移植性,因为将代码移动到新机器(可能运行不同的操作系统)是相对简单的并且给出相同的结果.

来自Python背景,我已经习惯了虚拟环境的概念.当与简单的所需软件包列表相结合时,这可以确保所安装的软件包和库在任何计算机上都可用,而不会有太多的麻烦.当然,这并不能保证 - 不同的操作系统有自己的缺点和特点 - 但它可以让你获得95%的路径.

R中是否存在这样的事情?即使它不那么复杂.例如,简单地维护所需包的纯文本列表和将安装任何缺少的脚本的脚本?

我准备第一次真正开始使用R,可能与Sweave一起使用,并且最好以最好的方式开始!谢谢你的想法.

Jua*_*vid 35

我将使用@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在`requirements.txt`文件中捕获依赖项并通过`pip install -r ...`安装的方法? (4认同)

joe*_*lom 17

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

conda create -n r-environment r-essentials r-base
conda activate r-environment
Run Code Online (Sandbox Code Playgroud)

我有很好的经验conda来维护不同的Python安装,包括用户特定的和同一用户的多个版本.我曾与测试[R conda以及jupyter-notebook和它的伟大工程.至少对于我的需求,其中包括RNA测序分析使用DEseq2和相关的软件包,以及data.tabledplyr.condavia bioconda有很多bioconductor包,根据这个SO问题的评论,似乎也install.packages()可以.


bat*_*man 15

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

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

与 conda r-enviroments 相比,我更喜欢这个选项,因为这里的所有内容都存储在文件中renv.lock,该文件可以提交到 Git 存储库并分发给团队。

  • 这个答案绝对应该是我们这个时代公认的答案。 (4认同)
  • 公平警告,截至 21 年 5 月 26 日,renv 和 Bioconductor 软件包还有很多未解决的问题(其中一些是我亲身经历过的)。https://github.com/rstudio/renv/issues?q=bioconductor 。目前对我来说有点破坏交易。 (4认同)