我应该如何处理“软件包'xxx'不可用(对于R版本xyz)”警告?


狗头军师
2025-04-09 05:24:19 (2天前)

我尝试使用安装软件包

install.packages(“foobarbaz”)
但收到警告

Warning message:
package ‘foobarbaz’ is not available (for R version x.y.z)
为什么R认为该软件包不可用?

2 条回复
  1. 1# v-star*위위 | 2020-07-27 15-36

    574

    1.你不能拼写

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

    2.您没有在正确的存储库中查找

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

    setRepositories()
    另请参见?setRepositories。

    要查看R将在哪个存储库中寻找您的软件包,并可以选择选择其他存储库。至少,通常会希望CRAN被选中;CRAN (extras)如果使用Windows,则通常会被选中;如果要使用Bioc*存储库,则通常会被选中[gen / prote / metabol / transcript]组学 生物学分析。

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

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

    使用以下命令返回所有可用的软件包

    ap <- available.packages()
    另见的r可用的软件包的名称,?available.packages。

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

    View(ap)
    “foobarbaz” %in% rownames(ap)
    另外,可用包的列表可以在浏览器中可以看到CRAN,CRAN(临时演员),Bioconductor的,R-锻造,RForge和github上。

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

    Warning: unable to access index for repository
    这可能表明所选的CRAN存储库当前不可用。您可以选择其他镜像,chooseCRANmirror()然后重试安装。

    有几种原因可能导致软件包不可用。

    4.您不想要包裹

    也许您真的不需要包装。对于包和库之间的差异,或者包和数据集之间的差异,通常会感到困惑。

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

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

    data()

    1. R或生物导体已过期

    它可能依赖于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.软件包位于非标准存储库中

    您的软件包位于非标准存储库中(例如Rbbg)。假定它合理地符合CRAN标准,您仍然可以使用来下载它install.packages;您只需要指定存储库URL。

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

登录 后才能参与评论