我使用开箱即用的 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 内部安装包,它们可以正常工作。
install.packages
安装的软件包,它们是否需要与 Anaconda 位于同一目录中?我尝试在 Jupyter 的 R 中加载已安装的包,但不起作用。你能更具体地说明你是如何工作的吗?谢谢!
Library/Frameworks/R.framework/Versions/3.2/Resources/library
。 install.packages
通过调用 .libPaths()
获取该路径,如果您想查看它们的位置,您可以自己执行此操作。通过 R.app、RStudio 和 R Jupyter notebook 安装它们都将它们放在同一个地方,这是 R 去寻找它们的地方 - library
也调用 .libPaths
。如果您愿意,可以使用 .libPaths()
(参见 ?.libPaths
),但我不推荐它。
install.packages
方法时遇到问题。简而言之,它以 sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
失败。完整的详细信息在 this question 中。如果你们采用这种方法来工作,我将非常感谢您指出我做错了什么。
现在我找到了文档:
这是解释如何生成仅在 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 中。
除了 R-essentials 在 Jupyter 上安装其他 R 包
install.packages('readr', repos='http://cran.us.r-project.org')
一个问题是特定存储库是 US.R-Project
(如下所示)。我尝试了其他人,但没有奏效。
注意将 readr
替换为要安装的任何所需的包名称。
这是一个以 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' 编译失败"
conda skeleton mran r-mice
之类的东西?
conda install --use-local r-xgboost
不起作用,请将其替换为 conda install -c ${CONDA_PREFIX}/conda-bld/ r-xgboost
。签出this!。
我找到了一个简单的解决方法。我想你有一个适合你的 RStudio IDE。为此使用 RStudio 很奇怪,但我直接从终端中的 R 尝试过,但它没有用。因此,在 RStudio 控制台中,只需将路径添加到您的 anaconda 目录(在 OSX 中,'/Users/yourusernamehere/anaconda/lib/R/library')
所以,例如,
install.packages('package','/Users/yourusernamehere/anaconda/lib/R/library')
我为发布这样一个不花哨的答案而感到羞耻,但这是唯一对我有用的答案。
在此处添加它,以便其他已经使用 Python 使用 Jupyter 笔记本并有兴趣将其与 R 一起使用的初学者:可以使用用于安装基本包的相同命令通过终端安装可用于 Anaconda 的其他包。
安装 r-essentials
conda install -c r r-essentials
安装 microbenchmark(用于准确测量和比较 R 表达式执行时间的基础设施)
conda install -c r r-microbenchmark
从命令行安装 CRAN 包:
R --slave -e "install.packages('missing-package', repos='http://cran.us.r-project.org')"
尝试在带有 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') 。现在它应该工作了!
使用康达锻造
距离最初的问题五年后,我断言更现代的解决方案只是:使用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 有一个模板,其中包括一些需要填写的信息字段。
使用 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 参数将安装+加载包,如果它不在你的库中,否则它只会加载它。
有人提出了一种不太优雅的解决方法,但实际上只要它工作正常就没有关系。
install.packages('package','/Users/yourusernamehere/anaconda/lib/R/library')
我花了几乎一整个上午的时间来寻找这个问题的答案。我能够在 RStudio 上安装库,但不能在 Jupyter Notebook 上安装库(它们有不同版本的 R)上面的解决方案“几乎”有效,只是我发现 Jupyter Notebook 试图安装在不同的目录中,它会报告什么目录。所以我只改变了它,它就像一个魅力......感谢 Dninhos
对我有用的是install.packages("package_name", type="binary")
。其他答案都没有奏效。
.libPaths
设置您希望安装软件包的路径;见?.libPaths
。install.packages
:install.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])
。