r - 我应该如何处理 "package ' xxx' is not available (for R version x.y.z)”警告?

标签 r installation repository package r-faq

最佳答案

1. 不能拼写

首先要测试的是您是否正确拼写了包裹的名称? R 中的包名称区分大小写。

2. 您没有查看正确的存储库

接下来,您应该检查包是否可用。类型

setRepositories()

另见 ?setRepositories .

要查看 R 将在哪些存储库中查找您的包,并可选择选择一些其他存储库。至少,您通常需要 CRAN被选中,和 CRAN (extras)如果您使用 Windows,并且 Bioc*如果您进行任何 [gen/prote/metabol/transcript] 组学生物学分析,请访问存储库。

要永久更改此设置,请添加类似 setRepositories(ind = c(1:6, 8)) 的行给您的 Rprofile.site 文件。

3. 软件包不在您选择的存储库中

使用返回所有可用的包
ap <- available.packages()

另见 Names of R's available packages , ?available.packages .

由于这是一个大矩阵,您可能希望使用数据查看器来检查它。或者,您可以通过针对行名称进行测试来快速检查包是否可用。
View(ap)
"foobarbaz" %in% rownames(ap)

或者,可以在浏览器中查看可用包的列表 CRAN , CRAN (extras) , Bioconductor , R-forge , RForge , 和 github .

与 CRAN 镜像交互时,您可能会收到的另一个可能的警告消息是:
Warning: unable to access index for repository

这可能表明所选的 CRAN 存储库当前不可用。您可以使用 chooseCRANmirror() 选择不同的镜像并再次尝试安装。

软件包不可用的原因有多种。

4.你不想要一个包裹

也许你真的不想要一个包裹。人们常常对 a package and a library 之间的区别感到困惑。 ,或包和数据集。

A package is a standardized collection of material extending R, e.g. providing code, data, or documentation. A library is a place (directory) where R knows to find packages it can use



要查看可用数据集,请键入
data()

5. R 或 Bioconductor 已过期

它可能依赖于更新版本的 R(或它导入/依赖的包之一)。看着
ap["foobarbaz", "Depends"]

并考虑将 R 安装更新到当前版本。在 Windows 上,这最容易通过 installr 完成。包裹。
library(installr)
updateR()

(当然,您可能需要先install.packages("installr")。)

对于 Bioconductor 软件包,您可能需要更新您的 Bioconductor 安装。
source("http://bioconductor.org/biocLite.R")
biocLite("BiocUpgrade")

6. 包过期

可能是 archived (如果它不再被维护并且不再通过 R CMD check 测试)。

在这种情况下,您可以使用 install_version() 加载旧版本的包。
library(remotes)
install_version("foobarbaz", "0.1.2")

另一种方法是从 github CRAN 镜像安装。
library(remotes)
install_github("cran/foobarbaz")

7.没有Windows/OS X/Linux二进制文件

它可能没有 Windows binary由于需要 CRAN 没有的附加软件。此外,某些软件包只能通过某些或所有平台的源获得。在这种情况下,CRAN (extras) 中可能有一个版本存储库(参见上面的 setRepositories)。

如果软件包需要编译代码(例如 C、C++、FORTRAN),则在 Windows 上安装 Rtools或在 OS X 上安装 developer tools随附 XCode,并通过以下方式安装包的源版本:
install.packages("foobarbaz", type = "source")

# Or equivalently, for Bioconductor packages:
source("http://bioconductor.org/biocLite.R")
biocLite("foobarbaz", type = "source")

在 CRAN 上,您可以通过查看 NeedsCompilation 来判断是否需要特殊工具来从源代码构建包。说明中的标志。

8. 包在github/Bitbucket/Gitorious

它可能在 Github/Bitbucket/Gitorious 上有一个存储库。这些软件包需要 remotes 要安装的包。
library(remotes)
install_github("packageauthor/foobarbaz")
install_bitbucket("packageauthor/foobarbaz")
install_gitorious("packageauthor/foobarbaz")

(与 installr 一样,您可能需要先 install.packages("remotes")。)

9. 没有源码版本的包

尽管您的软件包的二进制版本可用,但源版本不可用。您可以通过设置关闭此检查
options(install.packages.check.source = "no")

this SO answer by imanuelc 中所述和 ?install.packages 的详细信息部分.

10. 包在非标准仓库

您的包位于非标准存储库中(例如 Rbbg )。假设它合理地符合CRAN标准,您仍然可以使用install.packages下载它。 ;您只需要指定存储库 URL。
install.packages("Rbbg", repos = "http://r.findata.org")

RHIPE 另一方面,它不在类似 CRAN 的存储库中,而是拥有自己的 installation instructions .

关于r - 我应该如何处理 "package ' xxx' is not available (for R version x.y.z)”警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721884/

相关文章:

r - 从单个图像中的单个数据帧绘制许多线图

r - 根据 R 中的其他变量更改值

mysql - 全新的 mysql-server 安装不要求输入密码

datetime - 为什么 R 不能将 'CST' 识别为有效时区?

r - 获取第一个非 0 值或最后一个 0 值(如果仅此而已)

python - 如何让pyenv找到已安装的python版本

installation - InstFiles 上的 NSIS 控制进度条

windows - 如何在 SVN 中检测到冲突?

c# - 如何在投影的 Entity Framework 对象中包含复杂的实体字段?

ubuntu - 绕过 Debian 或 Ubuntu 的非病毒许可库的 GPL 打包