【问题标题】:How to install R packages that are not available in "R-essentials"?如何安装“R-essentials”中不可用的 R 包?
【发布时间】:2016-04-14 20:09:45
【问题描述】:

我使用开箱即用的 Anaconda 安装来使用 Python。现在我已经读到,也可以在此安装中“包含”R 世界,并在 Jupyter/Ipython 笔记本中使用 IR 内核。

我找到了安装许多著名 R 包的命令: conda install -c r r-essentials

我的初学者问题:

如何安装 R-essential 包中未包含的 R 包?例如 CRAN 上可用的 R 包。 “pip”仅适用于 PyPI Python 包,不是吗?

【问题讨论】:

  • 如果您通过常规的install.packages(来自 CRAN 镜像)或devtools::install_github(来自 GitHub)从 R 内部安装包,它们可以正常工作。
  • 谢谢!也许这是最简单的方法。我会将您的评论添加到答案中。
  • @alistaire 对于在 R 中通过 install.packages 安装的软件包,它们是否需要与 Anaconda 位于同一目录中?我尝试在 Jupyter 的 R 中加载已安装的包,但不起作用。你能更具体地说明你是如何工作的吗?谢谢!
  • @SeanM 不,除了在 Jupyter 中加载之外,我的与 Anaconda 完全无关。默认安装位置在 R 框架内:Library/Frameworks/R.framework/Versions/3.2/Resources/libraryinstall.packages 通过调用 .libPaths() 获取该路径,如果您想查看它们的位置,您可以自己完成。通过 R.app、RStudio 和 R Jupyter notebook 安装都将它们放在同一个地方,这是 R 去寻找它们的地方——library 也调用.libPaths。如果你愿意,你可以和.libPaths() 混在一起(见?.libPaths),但我不推荐它。
  • @alistaire 我遇到了install.packages 方法的问题。简而言之,它以sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook 失败。完整的细节在this question。如果你们采用这种方法,我将非常感谢您指出我做错了什么。

标签: python r anaconda conda


【解决方案1】:

现在我找到了文档:

这是解释如何生成仅在 CRAN 存储库中可用的 R 包的文档: https://www.continuum.io/content/conda-data-science

转到“构建 conda R 包”部分。

(提示:只要 R 包在 anaconda.org 下可用,请使用此资源。请参阅此处:https://www.continuum.io/blog/developer/jupyter-and-conda-r

alistaire 的回答是添加 R 包的另一种可能性:

如果您通过常规的install.packages(来自 CRAN 镜像)或devtools::install_github(来自 GitHub)从 R 内部安装包,它们可以正常工作。 @alistaire

如何做到这一点: 打开你的(独立的)R 安装,然后运行以下命令:

install.packages("png", "/home/user/anaconda3/lib/R/library")

将新包添加到 Jupyter 使用的正确 R 库中,否则该包将安装在 中提到的 /home/user/R/i686-pc-linux-gnu-library/3.2/png/libs 中.libPaths() .

【讨论】:

  • 你也可以使用.libPaths来设置你想要安装包的路径,如果你给它一个参数的话;见?.libPaths
  • 您也可以在 Jupyter 单元格中运行 install.packagesinstall.packages('package name', 'installation path (ending with Anaconda3\R\library\learningr)', repo='repo link. Check https://cran.r-project.org/mirrors.html')repo 存在是因为在 Jupyter 中安装软件包时需要指定 repo,否则会抛出 trying to use CRAN without setting a mirror 错误。
  • 提供的网址已失效
  • 我发现.libPaths()[2] 包含"~/.conda/envs/<ENV_NAME>/lib/R/library" 的路径。所以你可以做install.packages("png", .libPaths()[2])
【解决方案2】:

在 Jupyter 上安装 R-essentials 之外的其他 R 包

install.packages('readr', repos='http://cran.us.r-project.org')

一个问题是特定存储库是US.R-Project(如下所示)。我尝试了其他方法,但没有成功。

注意将readr 替换为任何想要安装的包名。

【讨论】:

    【解决方案3】:

    这是一个以 conda 为中心的答案。它建立在 Frank 的回答和 continuum 网站:https://www.continuum.io/content/conda-data-science 之上,并提供了更多细节。

    一些在 r-essentials 中不可用的包仍然可以在 conda 频道上使用,在这种情况下,很简单:

    conda config --add channels r
    conda install r-readxl
    

    如果你需要构建一个包并使用 conda 安装:

    conda skeleton cran r-xgboost
    conda build r-xgboost
    conda install --use-local r-xgboost
    

    continuum 网站中没有最后一行,因为他们认为它首先发布到 anaconda 存储库。没有它,任何东西都不会放在 envs/ 目录中,并且命令行 R 或 Jupyter 将无法访问该包。

    在 Mac 上,我发现为包构建安装 Clang 编译器很重要:

    conda install clangxx_oxs-64
    

    【讨论】:

    • 对我来说,这个答案只适用于某些包。对于其他包,我在第二步 conda build r-xgboost 时遇到错误。 “make:/home/user/anaconda3/conda-bld/r-matrixstats_1516727877269/_h_env_placehold_pl/bin/x86_64-conda_cos6-linux-gnu-cc:找不到命令make:*** [/home/user/anaconda3/conda- bld/r-matrixstats_1516727877269/_h_env_placehold_pl/lib/R/etc/Makeconf:160: 000.init.o] 错误 127 错误: 包 'matrixStats' 编译失败"
    • @burton030 我似乎遇到了同样的错误。你找到解决办法了吗?
    • 嘿,这个答案对我有用,但我无法使用 mro-base 将这些包安装到 r 环境中。相反,它必须是 r-base。您是否知道为 mro-base 构建软件包的任何方法,或者这是否需要像 conda skeleton mran r-mice 这样的东西,目前不存在?
    【解决方案4】:

    我找到了一个简单的解决方法。我想你有一个 RStudio IDE 适合你。为此使用 RStudio 很奇怪,但我直接从终端中的 R 尝试过,但它没有用。因此,在 RStudio 控制台中,只需像往常一样添加 anaconda 目录的路径(在 OSX 中,'/Users/yourusernamehere/anaconda/lib/R/library')

    例如,

    install.packages('package','/Users/yourusernamehere/anaconda/lib/R/library')
    

    我为发布这样一个不花哨的答案而感到羞耻,但这是唯一对我有用的答案。

    【讨论】:

    • 我很惊讶这个解决方案对我有用,但它真的就这么简单。
    • 我试过了,但我仍然收到非零退出状态错误。
    【解决方案5】:

    在此处添加它,以便其他已经使用 Python 使用 Jupyter 笔记本并有兴趣将其与 R 一起使用的初学者:可以使用用于安装基本包的相同命令通过终端安装可用于 Anaconda 的其他包。

    安装 r-essentials

    conda install -c r r-essentials
    

    安装 microbenchmark(用于准确测量和比较 R 表达式执行时间的基础设施)

    conda install -c r r-microbenchmark
    

    【讨论】:

      【解决方案6】:

      从命令行安装 CRAN 包:

      R --slave -e "install.packages('missing-package', repos='http://cran.us.r-project.org')"
      

      【讨论】:

      • 道具!它有效,并且是最简单的解决方案:)
      【解决方案7】:

      我在尝试使用带有 r-essentials 的 conda 中的 install_github("user/package") 从 github 安装软件包时遇到问题。错误是多方面的,而且不是描述性的。

      能够使用以下步骤解决问题:

      • 在本地下载并解压包
      • 激活正确的 conda 环境(如果需要)
      • 从命令行运行 R
      • library(devtools)
      • install('/path/to/unzipped-package')
      • 由于缺少依赖项而导致命令失败,但现在我知道缺少什么了!
      • 对所有依赖项运行 install.packages('missing-package', repos='http://cran.us.r-project.org')
      • 再次运行install('/path/to/unzipped-package')。现在应该可以了!

      【讨论】:

        【解决方案8】:

        使用 conda 安装 rpy2 并在您的 Jupyter 笔记本中添加以下行。

        %load_ext rpy2.ipython
        

        在接下来的块中,您可以通过指定 %R 来简单地运行任何 r 代码

        以下是我最喜欢的安装和/或加载 r 包的方法

        %R if (!require("pacman")) install.packages("pacman")
        %R pacman::p_load(dplyr, data.table, package3, package4)
        

        p_load 参数将安装+加载如果它不在你的库中,否则它只会加载它。

        【讨论】:

          【解决方案9】:

          有人提出了一种不太优雅的解决方法,但实际上只要它工作正常就没有关系。

          install.packages('package','/Users/yourusernamehere/anaconda/lib/R/library')

          我花了几乎整个上午的时间来寻找这个问题的答案。我能够在 RStudio 上安装库,但不能在 Jupyter Notebook 上安装库(它们有不同版本的 R)上述解决方案“几乎”有效,只是我发现 Jupyter Notebook 试图安装在不同的目录中,它会报告什么目录。所以我只改变了它,它就像一个魅力......感谢 Dninhos

          【讨论】:

            【解决方案10】:

            使用 Conda Forge

            距最初的问题五年后,我断言更现代的解决方案只是:使用Conda Forge。 Conda Forge 频道不仅提供了更广泛的 CRAN 覆盖范围,而且还具有简单的程序和很长的周转时间(通常在 24 小时以下),可以将缺少的 CRAN 包添加到频道中。

            从 Conda Forge 开始

            我建议将 Conda Forge 用于完整堆栈,并为您需要的每个 R 版本使用专用环境。

            conda create -n r41 -c conda-forge r-base=4.1 r-irkernel ...
            

            其中... 是您需要的任何附加包(如r-tidyverse)。 r-irkernel 包是可选的,但包含在此处是因为 OP 提到在 Jupyter 中使用 R。

            如果您的带有 Jupyter 的环境(应该在单独的环境中)也安装了 nb_conda_kernels,那么 Jupyter 将自动发现此环境。

            从 Conda Forge 安装

            通常,CRAN 上的所有 R 包在 Conda Forge 上的包名称前都有一个 r- 前缀。所以,如果你感兴趣的包是pkgname,先试试

            conda install -n r41 -c conda-forge r-pkgname
            

            如果包不可用,则继续添加或请求它。

            使用 Conda R Skeleton Helper 提交 CRAN 包

            有一个有用的脚本集合,称为 conda_r_skeleton_helper,用于为 CRAN 包创建新的 Conda Forge 配方。 the README有明确的指示。

            概括地说,一个人会

            • 克隆conda_r_skeleton_helper 存储库
            • 编辑packages.txt 文件以包含r-pkgname
            • 运行脚本生成配方
            • 派生并克隆conda-forge/staged-recipes
            • 将新配方文件夹复制到stage-recipes/recipes 文件夹
            • 提交更改,推送到分支,然后将拉取请求提交回 Conda Forge

            这可能需要大约 15 分钟的工作时间。提交后,大多数包在 24 小时内被接受、输入并部署到 Conda Forge 渠道。一旦原料启动并运行,Conda Forge 基础架构使用机器人自动检测版本更新、生成新的拉取请求,甚至自动合并成功构建的拉取请求。也就是说,维护人员的工作量非常小,如果出现问题,可以有一个团队来提供帮助。

            提交包裹申请

            对于不喜欢创建和维护 Conda Forge 构建的用户,可以通过 filing a new Issue 在 Conda Forge 的 staged-recipes 存储库中请求软件包。 Package Request 有一个模板,其中包含一些需要填写的信息字段。

            【讨论】:

              猜你喜欢
              • 2019-08-08
              • 2020-03-09
              • 1970-01-01
              • 1970-01-01
              • 2018-04-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-04-23
              相关资源
              最近更新 更多