【问题标题】:Virtual environment in R?R中的虚拟环境?
【发布时间】:2014-08-08 14:36:20
【问题描述】:

我发现了几篇关于 R 中的最佳实践、可重复性和工作流程的帖子,例如:

主要关注点之一是确保代码的可移植性,从某种意义上说,将代码移至新机器(可能运行不同的操作系统)相对简单并且产生相同的结果。

来自 Python 背景,我习惯了虚拟环境的概念。当与所需软件包的简单列表相结合时,这有助于确保已安装的软件包和库在任何机器上都可用,而不会大惊小怪。当然,这并不能保证 - 不同的操作系统有自己的弱点和特点 - 但它可以让你达到 95% 的目标。

R 中是否存在这样的东西?即使它没有那么复杂。例如,只需维护一个所需包的纯文本列表和一个将安装任何缺少的包的脚本?

我即将开始第一次认真使用 R,可能与 Sweave 一起使用,并且希望以尽可能最好的方式开始!感谢您的想法。

【问题讨论】:

  • 好问题。我投票支持将其迁移到 SO。这个问题没有统计内容,所以 SO 的人可能会给你一个更好的答案。
  • Renv 可能会满足您的需求:github.com/viking/Renv
  • 维护包列表并将它们与系统库隔离正是 Packrat 为 R 所做的事情:rstudio.github.io/packrat
  • 有人应该将答案放在合法的答案中,而不是在 cmets 中。我不知道足够多的 R 来回答,但是从查看链接来看,Renv 似乎只是管理 R 的版本,而 Packrat 的文档听起来更像是 virtualenv 的匹配项,您可以在不同的环境中使用具有不同依赖项集的相同语言版本项目。
  • "可能与 Sweave 结合使用" --- 帮自己一个忙,从 knitr 开始,而不是 Sweave。

标签: r python


【解决方案1】:

我将使用@cboettig 发布的评论来解决这个问题。

包装鼠

Packrat 是 R 的依赖管理系统。为您提供三个重要优势(所有这些优势都集中在您的可移植性需求上)

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

  • 便携:轻松将您的项目从一台计算机传输到另一台计算机,甚至跨不同平台。 Packrat 可以轻松安装您的项目所依赖的包。

  • 可重现:Packrat 记录您所依赖的确切软件包版本,并确保无论您走到哪里都能安装这些确切版本。

下一步是什么?

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

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

  3. 在 RStudio 中使用 Packrat:http://rstudio.github.io/packrat/rstudio.html

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

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

【讨论】:

  • Packrat 在 requirements.txt 文件中捕获您的依赖项然后通过 pip install -r ... 安装的方式是什么?
  • 我不知道为什么,但是 packrat 安装软件包的速度非常慢。每次我尝试下载一个新包时,都会浪费两天时间
  • @Nick 文档here 显示了一个snapshot 命令。
【解决方案2】:

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

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

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

【讨论】:

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

添加到这里:

注意: 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”,也许这个链接会有所帮助 -> Is there something like requirements.txt for R?

【讨论】:

    【解决方案4】:

    Anaconda 包管理器condasupports creating R environments

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

    我在使用 conda 维护不同的 Python 安装方面拥有丰富的经验,包括用户特定的和同一用户的多个版本。我已经用condajupyter-notebook 测试了R,效果很好。至少满足我的需求,其中包括使用DEseq2 和相关软件包以及data.tabledplyr 的RNA 测序分析。 conda 通过bioconda 提供许多生物导体封装,根据this SO question 上的cmets,似乎install.packages() 也可以工作。

    【讨论】:

    • 我现在也进入了生物信息学领域,因此您的回答变得更加相关!你用什么IDE?我在将 conda 集成到 Rstudio 时遇到了麻烦——它不想使用正确的解释器路径。
    • 好玩!我使用 jupyter-notebook 来满足我的大部分需求。我之前确实使用过 Rstudio,但我记得在使用 conda 运行它时也遇到了一些麻烦,而且我习惯了 python 的 notebook(这是我迄今为止最常使用的),所以这是我感觉最舒服的地方。跨度>
    • 我的 conda R 仍在 .libPaths() 中显示我的非 conda R 库位置并尝试在那里安装新软件包,我必须在终端中运行 export R_LIBS_USER="/path/to/miniconda2/envs/r.3.3/lib/R/library" 才能启动 R 并尝试安装包。仍在测试,但它看起来像它的工作。
    【解决方案5】:

    查看 R 容器管理解决方案 roverR。详情请见https://www.slideshare.net/DavidKunFF/ownr-technical-introduction,尤其是幻灯片12。

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

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

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

    【讨论】:

    • 我认为这个资源已经不存在了
    • 是的,幻灯片共享不见了。我也无法连接到此答案中的两个存储库,也无法连接到 lair.ownr.io
    • 抱歉,laiR 暂时下线,我们正在努力将其集成到我们的其他产品(ownR 平台)中,并会尽快再次提供。
    • 内容不可用,目前看来这不是答案
    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多