小编典典

我应该如何处理“package 'xxx' is not available (for R version xyz)”警告?

all

我试图安装一个包,使用

install.packages("foobarbaz")

但收到警告

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

为什么 R 认为该软件包不可用?


阅读 332

收藏
2022-03-04

共1个答案

小编典典

1.你不会拼写

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


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

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

setRepositories()

另请参阅?setRepositories

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

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


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

使用返回所有可用的包

ap <- available.packages()

另请参阅R 可用包的名称?
available.packages

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

View(ap)
"foobarbaz" %in% rownames(ap)

或者,可以在CRANCRAN
(extras)
BioconductorR-
forge
RForgeGitHub的浏览器中查看可用包的列表。

与 CRAN 镜像交互时您可能会收到的另一个可能的警告消息是:

Warning: unable to access index for repository

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


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


4.你不想要一个包裹

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

包是扩展 R 的材料的标准化集合,例如提供代码、数据或文档。库是 R 知道找到它可以使用的包的地方(目录)

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

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. 包裹已过期

它可能已被归档(如果它不再维护并且不再通过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 二进制文件

由于需要 CRAN 没有的附加软件,它可能没有Windows
二进制文件。
此外,某些软件包只能通过某些或所有平台的源获得。在这种情况下,存储库中可能有一个版本CRAN (extras)(见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描述中的标志来判断是否需要特殊工具来从源代码构建包。


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

正如imanuelc 的这个 SO
答案
?install.packages.


10. 包在非标准仓库

您的包位于非标准存储库中。假设它合理地符合 CRAN
标准,您仍然可以使用install.packages; 您只需指定存储库 URL。

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

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

2022-03-04