ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我找到了安装许多著名 R 包的命令: conda install -cr 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 中。如果你们采用这种方法来工作,我将非常感谢您指出我做错了什么。

Ö
Ömer An

现在我找到了文档:

这是解释如何生成仅在 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 库中,否则该包将安装在 .libPaths() 中提到的 /home/user/R/i686-pc-linux-gnu-library/3.2/png/libs 中。


如果您将参数传递给它,您还可以使用 .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])
j
jakub

除了 R-essentials 在 Jupyter 上安装其他 R 包

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

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

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


Z
Ziggy Eunicien

这是一个以 conda 为中心的答案。它建立在弗兰克的答案和连续网站: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 之类的东西?
如果 conda install --use-local r-xgboost 不起作用,请将其替换为 conda install -c ${CONDA_PREFIX}/conda-bld/ r-xgboost。签出this!。
D
Deninhos

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

所以,例如,

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

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


我很惊讶这个解决方案对我有用,但它真的就这么简单。
我试过这个,我仍然得到一个非零退出状态错误。
A
A. Beal

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

安装 r-essentials

conda install -c r r-essentials

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

conda install -c r r-microbenchmark

A
Alf Eaton

从命令行安装 CRAN 包:

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

道具!它有效,它是最简单的解决方案:)
v
volodymyr

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

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

在本地下载并解压包

激活正确的 conda 环境(如果需要)

从命令行运行 R

库(开发工具)

install('/path/to/unzipped-package')

由于缺少依赖项,命令失败,但现在我知道缺少了什么!

对所有依赖项运行 install.packages('missing-package', repos='http://cran.us.r-project.org')

再次运行 install('/path/to/unzipped-package') 。现在它应该工作了!


m
merv

使用康达锻造

距离最初的问题五年后,我断言更现代的解决方案只是:使用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

运行脚本以生成配方

fork 并克隆 conda-forge/staged-recipes

将新配方文件夹复制到 stage-recipes/recipes 文件夹

提交更改,推送到 fork,然后将 Pull Request 提交回 Conda Forge

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

提交包裹请求

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


P
Pranav Pandya

使用 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 参数将安装+加载包,如果它不在你的库中,否则它只会加载它。


H
Hamza

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

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

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


b
bixiou

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