gpt4 book ai didi

R - 相当于 pip freeze(如何从列出包名称和版本的文件安装所有 R 依赖项)

转载 作者:行者123 更新时间:2023-12-04 12:20:24 25 4
gpt4 key购买 nike

我在一个新项目中,其中有大量依赖项的 R 代码,以及特定版本的 R (3.1.1)。当他们最初编写代码时,他们使用 R 的 install.package('the-package') 下载最新版本,但是现在许多依赖项都有新版本,这使得它们与使用的 R 版本不兼容(某些软件包的最新版本,例如 dplyr、rcpp 需要一个R升级这是不可能的)

从这次经历来看,R 似乎拥有最糟糕的包管理器——我来自 NPM,您可以在其中指定每个包和所需包的特定版本。手动解决这些依赖关系是一个巨大的痛苦(持续 5 个多小时),因为显然默认行为是始终下载任何包的前沿。到目前为止,我一直比较成功,点击包的 CRAN 页面上的“旧源”链接,下载 tars 然后从他们的安装......但这似乎是很多不必要的痛苦。我有一个团队成员关注 this guide 来获取我需要的所有依赖项和版本的列表(这至少让我有可能预先安装所有包,然后继续试错,而不是解决 50+每次在我的新环境中构建失败时都会单独依赖依赖项)。但是没有“R,处理我的依赖项文件”命令。

  • Javascript - 你使用 NPM 从 package.json 安装。
  • Python - 你可以做 pip freezepip install pip_freeze.txt ,相同的概念
  • R - 据我所知,如果您像我一样有特定需求,没有简单的方法可以准确下载您需要的内容

  • 这是一个 shell 脚本,可以轻松修改以下载特定版本的软件包
    #!/bin/bash
    # CRAN doesn't have a version of this installable in our old R.
    wget -P /tmp https://cran.r-project.org/src/contrib/Archive/Rcpp/Rcpp_0.12.5.tar.gz || { echo 'wget failed'; exit 1; }
    Rscript -e "install.packages('/tmp/Rcpp_0.12.5.tar.gz', repos = NULL, type='source')" 2>&1 | tee -a rPkgInstall.log
    if egrep "non-zero exit status|Error in install.packages|^package .* is not available" rPkgInstall.log; then
    echo 'FAILED';
    exit 1;
    fi

    对于下一个加入团队的人,我怎样才能让这个过程更容易?文档可以有很长的路要走,但我正在寻找的是 R 中的功能包管理器...或者允许我在 R 中执行与 NPM install (from a package.json) 相同的约定

    最佳答案

    packrat 包应该适用于您的用例。如果您使用的是 RStudio,我建议您使用他们内置于 UI 中的 Packrat 工具,但您也可以在 RStudio 之外使用它。从 Packrat walkthrough :

    ## Install the package from CRAN
    install.packages("packrat")

    ## Initialize packrat
    packrat::init("~/path/to/your/project")

    ## Later on, install some package
    ## It will be installed in ~/path/to/your/project/packrat/lib
    install.packages("reshape2")

    ## Take a snapshot of installed packages
    packrat::snapshot()

    我可能只描述了手动过程的一半。我只在 RStudio 中使用过自动模式。我在启动一个项目后安装了它,它查看了我的代码,设法提取了所有必要的包(不确定版本,因为我总是处于最前沿),保存源文件,并将它们安装在我的项目中目录。然后我能够将 packrat 目录移动到另一台机器并让它安装所有软件包。

    关于R - 相当于 pip freeze(如何从列出包名称和版本的文件安装所有 R 依赖项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838191/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com