如何安装 "R-essentials" 中不可用的 R 包?

How to install R packages that are not available in "R-essentials"?

我使用开箱即用的 Anaconda 安装来处理 Python。现在我已经读到,在这个安装中也可以 "include" R 世界并在 Jupyter/Ipython notebook.[=11= 中使用 IR 内核]

我找到了安装一些著名 R 包的命令: 康达安装-c r r-essentials

我的初学者问题:

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

现在我找到了文档:

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

转到第 "Building a conda R package".

部分

(提示:只要 anaconda.org 下的 R 包可用,请使用此资源。请参阅此处: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().

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

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

一个问题是特定的存储库是 US.R-Project(如下所示)。我试过其他的也没用。

N.B。将 readr 替换为要安装的任何所需的包名称。

我在使用 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')。现在它应该工作了!

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

所以,例如,

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

我为 post 这样一个不花哨的答案感到羞愧,但这是唯一对我有用的答案。

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

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

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

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

%load_ext rpy2.ipython

在接下来的块中,您可以通过指定 %R

简单地 运行 任何 r 代码

下面是我最喜欢的安装方法and/or加载r包

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

p_load 参数将 安装 + 加载 如果它不在你的库中 否则它将简单地加载它。

这是一个以 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

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

安装 r-essentials

conda install -c r r-essentials

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

conda install -c r r-microbenchmark

从命令行安装 CRAN 包:

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

使用 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 for creating new Conda Forge recipes for CRAN packages. There are clear directions in the README

大体上,一会

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

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

提交包裹请求

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

对我有用的是 install.packages("package_name", type="binary")。 None 其他答案有效。