我试着安装一个包,使用

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)"


当前回答

另一个原因+解决方案

当我试图在我公司的HPC上的RStudio中安装pkgdown时,我遇到了这个错误(“包XXX对于R版本X.X.X不可用”)。

事实证明,他们在HPC上拥有的CRAN快照是2018年1月(几乎2年前)的,而且pkgdown当时确实不存在。这意味着为外行用户控制包的源代码,但作为开发人员,在大多数情况下,您可以通过以下方式更改:

## checking the specific repos you currently have
getOption("repos")

## updating your CRAN snapshot to a newer date
r <- getOption("repos")
r["newCRAN"] <- "https://cran.microsoft.com/snapshot/*2019-11-07*/"
options(repos = r)

## add newCRAN to repos you can use
setRepositories()

如果您知道您在做什么,并且可能需要多个在您的系统的CRAN中不可用的包,您可以在您的项目. rprofile中进行设置。

如果只有一个包,可能只使用install。包(“包名”,repos =“一个比你公司的旧的CRAN快照更新的CRAN”)。

其他回答

我在Ubuntu上仔细按照安装r的说明修复了这个错误,包括:

添加deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/到我的/etc/apt/sources.列表文件 运行sudo apt-get update 运行sudo apt-get install r-base-dev

对于第一步,如果你愿意,你可以选择任何CRAN下载镜像来代替我的多伦多大学下载镜像。

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的存储库中,它有自己的安装说明。

当我在R-3.4.1中得到相同的警告时,这就是我最终可以为安装psych软件包所做的事情

1:谷歌那个包裹。

2:手动下载,扩展名为tar.gz

3:选择“包归档文件(.zip;.tar.gz)”选项安装R中的包

4:本地浏览到下载的地方,点击安装

你可能会得到一个警告:软件包的依赖项'xyz'不可用,然后首先从存储库安装这些依赖项,然后执行步骤3-4 .

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)