我试着安装一个包,使用

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 3.2.3(2016年新发布)中有一个错误,有时会阻止它找到正确的包。解决方法是手动设置存储库:

install.packages("lubridate", dependencies=TRUE, repos='http://cran.rstudio.com/')

在其他问题中找到解决方案

其他回答

我发现@Richie Cotton的出色解决方案中#6包的一个轻微变化已经过时了。

有时包维护者可能会显示它不支持的R版本差距。在这种情况下,您至少有两个选择:1)将您的R版本升级到目标包已经支持的下一个版本,2)从可用的旧版本中安装最新的版本,以配合您的R版本。

一个具体的例子:用于数据挖掘的包的最新CRAN版本5.3.0不支持R版本3.4,因为它在包版本5.2.0 (R >= 2.13.0)和5.3.0 (R >=3.5)之间有很大的更新。

在这种情况下,升级R安装的替代方案是前面提到的解决方案。如果您没有devtools包(其中包括包远程),请安装devtools包,然后安装可以在当前r中工作的特定版本。您可以在CRAN页面上查找特定的包存档信息。

library("devtools")
install_version("rattle", version = "5.2.0", repos = "http://cran.us.r-project.org")

另一个原因+解决方案

当我试图在我公司的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”)。

我也有同样的问题(在Linux上),可以通过更改代理设置来解决。 如果您在代理服务器后面,请使用R. getenv("http_proxy")检查配置。 在我的~/。我有以下几行(来自https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP-or-HTTPS-Proxy)导致了这个问题:

http_proxy=https://proxy.dom.com:port
http_proxy_user=user:passwd

改为

http_proxy="http://user:passwd@proxy.dom.com:port"

解决了问题。你可以对https做同样的事情。

当我读到“包xxx不可用于r版本-x-y-z”时,我的第一个想法不是……

HTH

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,但这里有一个最简单的解决方案,99%的时间都有效。

你需要做的只是:

install.packages('package-name',repos='http://cran.us.r-project.org')

正如作者在这里提到的