我试着安装一个包,使用

install.packages("foobarbaz")

却收到了警告

Warning message:
package 'foobarbaz' is not available (for R version x.y.z)

为什么R认为这个包是不可用的?

参见这些问题的具体例子:

My package doesn't work for R 2.15.2 package 'Rbbg' is not available (for R version 2.15.2) package is not available (for R version 2.15.2) package doMC NOT available for R version 3.0.0 warning in install.packages Dependency ‘Rglpk’ is not available for package ‘fPortfolio’ What to do when a package is not available for our R version? Is the bigvis package for R not available for R version 3.0.1? package ‘syncwave’/‘mvcwt’ is not available (for R version 3.0.2) package ‘diamonds’ is not available (for R version 3.0.0) Is the plyr package for R not available for R version 3.0.2? Package bigmemory not installing on R 64 3.0.2 package "makeR" is not available (for version 3.0.2) package ‘RTN’ is not available (for R version 3.0.1) Trouble Installing geoR package package ‘twitterR’ is not available (for R version 3.1.0) How to install 'Rcpp, package? I got "package is not available" package ‘dataset’ is not available (for R version 3.1.1) "package ‘rhipe’ is not available (for R version 3.1.2)"


当前回答

在我的例子中,解决方案是简单地升级R。

其他回答

1. 你不会拼写

要测试的第一件事是您是否正确拼写了包的名称?包名在R中区分大小写。


2. 你没有找对仓库

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

setRepositories()

参见? setrepository。

查看R将在哪些存储库中查找您的包,并可选地选择一些其他存储库。至少,您通常会希望选择CRAN,如果使用Windows则选择CRAN(附加),如果进行任何生物学分析则选择Bioc*存储库。

要永久地改变这一点,可以在Rprofile中添加setrepos(ind = c(1:6, 8))这样的行。网站文件。


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()选择不同的镜像,并再次尝试安装。


有几个原因可能导致包不可用。


4. 你不想要包裹

也许你并不是真的想要一个包裹。对于包和库,或者包和数据集之间的区别感到困惑是很常见的。

包是扩展R语言的标准化材料集合,例如提供代码、数据或文档。库是一个R可以找到它可以使用的包的位置(目录)

要查看可用的数据集,请键入

data()

5. R或Bioconductor已经过时了

它可能依赖于R的最新版本(或者它导入/依赖的某个包)。看看

ap["foobarbaz", "Depends"]

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

library(installr)
updateR()

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

对于Bioconductor包,您可能需要更新Bioconductor安装。

source("http://bioconductor.org/biocLite.R")
biocLite("BiocUpgrade")

6. 包装过期了

它可能已经存档(如果不再维护它并且不再通过R CMD检查测试)。

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

library(remotes)
install_version("foobarbaz", "0.1.2")

另一种方法是从GitHub CRAN镜像安装。

library(remotes)
install_github("cran/foobarbaz")

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

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

如果包需要编译代码(例如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标志来判断是否需要特殊的工具从源代码构建包。


8. 该软件包在GitHub/Bitbucket/Gitorious上

它可能在GitHub/Bitbucket/Gitorious上有一个存储库。这些包需要安装remotes包。

library(remotes)
install_github("packageauthor/foobarbaz")
install_bitbucket("packageauthor/foobarbaz")
install_gitorious("packageauthor/foobarbaz")

(和installr一样,你可能需要先安装.packages("remotes")。)


9. 该包没有源版本

虽然包的二进制版本可用,但源版本不可用。您可以通过设置关闭此检查

options(install.packages.check.source = "no")

如imanuelc和?install.packages的详细信息部分所述。


10. 包位于非标准存储库中

你的包在一个非标准的存储库中(例如Rbbg)。假设它与CRAN标准合理兼容,您仍然可以使用install.packages下载它;你只需要指定存储库URL。

install.packages("Rbbg", repos = "http://r.findata.org")

另一方面,RHIPE并不在类似于crane的存储库中,它有自己的安装说明。

11. R(或其他依赖项)已经过期,您不想更新它。

警告:这并不是最佳实践。

下载包源代码。 导航到DESCRIPTION文件。 用你的文本编辑器删除恼人的行。 取决于:R (>= 3.1.1) 从本地安装(即从DESCRIPTION的父目录安装)。 安装。packages("foo", type="source", repos=NULL)

One thing that happened for me is that the version of R provided by my linux distribution (R version 3.0.2 provided by Ubuntu 14.04) was too old for the latest version of the package available on CRAN (in my case, plyr version 1.8.3 as of today). The solution was to use the packaging system of my distribution instead of trying to install from R (apt-get install r-cran-plyr got me version 1.8.1 of plyr). Maybe I could have tried to update R using updateR(), but I'm afraid that doing so would interfere with my distribution's package manager.


编辑(04/08/2020):我最近遇到了一个包(XML)的问题,据报道,在CRAN中的包更新后,我的R版本(3.6.3,Debian伸展上的最新支持)不可用。这非常出乎意料,因为我之前已经成功地安装了它(在相同的R版本和相同的操作系统上)。

由于某种原因,软件包仍然在那里,但是请安装。Packages只查看更新的(且不兼容的)版本。解决方案是找到兼容版本的URL并强制安装。使用它的包,如下:

install.packages("https://cran.r-project.org/src/contrib/Archive/XML/XML_3.99-0.3.tar.gz", repos=NULL, type="source", ask=FALSE)

在我的例子中,解决方案是简单地升级R。

当我使用生物导体作为源,然后调用生物clite时,它几乎总是为我工作。例子:

source("https://bioconductor.org/biocLite.R")
biocLite("preprocessCore")