我试图安装一个包,使用
install.packages("foobarbaz")
但收到警告
Warning message: package 'foobarbaz' is not available (for R version x.y.z)
为什么 R 认为该软件包不可用?
1.你不会拼写
首先要测试的是 您是否正确拼写了包裹的名称? 包名称在 R 中区分大小写。
2.您没有查看正确的存储库
接下来,您应该检查该软件包是否可用。类型
setRepositories()
另请参阅?setRepositories。
要查看 R 将在哪些存储库中查找您的包,并可选择选择一些其他存储库。至少,您通常希望CRAN被选中,CRAN (extras)如果您使用 Windows,并且Bioc*如果您进行任何生物分析,则需要选择存储库。
CRAN
CRAN (extras)
Bioc*
setRepositories(ind = c(1:6, 8))要永久更改此设置,请在Rprofile.site文件中添加类似的行。
setRepositories(ind = c(1:6, 8))
Rprofile.site
3. 包不在您选择的存储库中
使用返回所有可用的包
ap <- available.packages()
另请参阅R 可用包的名称? 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()并再次尝试安装。
chooseCRANmirror()
软件包不可用的原因有多种。
4.你不想要一个包裹
也许你真的不想要一个包裹。对包和库或包和数据集之间的区别感到困惑是很常见的。
包是扩展 R 的材料的标准化集合,例如提供代码、数据或文档。库是 R 知道找到它可以使用的包的地方(目录)
要查看可用数据集,请键入
data()
5. R 或 Bioconductor 已过期
它可能依赖于更新版本的 R(或它导入/依赖的包之一)。看着
ap["foobarbaz", "Depends"]
并考虑将您的 R 安装更新到当前版本。在 Windows 上,这很容易通过installr包完成。
installr
library(installr) updateR()
(当然,你可能需要install.packages("installr")先。)
install.packages("installr")
同样对于 Bioconductor 包,您可能需要更新您的 Bioconductor 安装。
source("http://bioconductor.org/biocLite.R") biocLite("BiocUpgrade")
6. 包裹已过期
它可能已被归档(如果它不再维护并且不再通过R CMD check测试)。
R CMD check
在这种情况下,您可以使用加载旧版本的包install_version()
install_version()
library(remotes) install_version("foobarbaz", "0.1.2")
另一种方法是从 GitHub CRAN 镜像安装。
library(remotes) install_github("cran/foobarbaz")
7. 没有 Windows/OS X/Linux 二进制文件
由于需要 CRAN 没有的附加软件,它可能没有Windows 二进制文件。此外,某些软件包只能通过某些或所有平台的源获得。在这种情况下,存储库中可能有一个版本CRAN (extras)(见setRepositories上文)。
setRepositories
如果包需要编译代码(例如 C、C++、FORTRAN),则在 Windows 上安装Rtools或在 OS X 上安装 XCode 随附的开发人员工具,并通过以下方式安装包的源版本:
install.packages("foobarbaz", type = "source") # Or equivalently, for Bioconductor packages: source("http://bioconductor.org/biocLite.R") biocLite("foobarbaz", type = "source")
在 CRAN 上,您可以通过查看NeedsCompilation描述中的标志来判断是否需要特殊工具来从源代码构建包。
NeedsCompilation
8. 包在 GitHub/Bitbucket/Gitorious
它可能在 GitHub/Bitbucket/Gitorious 上有一个存储库。这些包需要remotes安装包。
remotes
library(remotes) install_github("packageauthor/foobarbaz") install_bitbucket("packageauthor/foobarbaz") install_gitorious("packageauthor/foobarbaz")
(与 一样installr,您可能需要install.packages("remotes")先这样做。)
install.packages("remotes")
9.包没有源码版本
尽管您的包的二进制版本可用,但源版本不可用。您可以通过设置关闭此检查
options(install.packages.check.source = "no")
正如imanuelc 的这个 SO 答案和?install.packages.
?install.packages
10. 包在非标准仓库
您的包位于非标准存储库中。假设它合理地符合 CRAN 标准,您仍然可以使用install.packages; 您只需指定存储库 URL。
install.packages
install.packages("Rbbg", repos = "http://r.findata.org")
RHIPE另一方面,它不在类似 CRAN 的存储库中,并且有自己的安装说明。
RHIPE