首页 文章

我该如何处理“包'xxx'不可用(对于R版x.y.z)”警告?

提问于
浏览

16 回答

  • 432

    另一个小的补充,同时尝试使用docker镜像测试旧的R版本 rocker/r-ver:3.1.0

    • 默认 repos 设置为 MRAN ,这无法获得许多包 .

    • 该版本的R没有 https ,因此,例如: install.packages("knitr", repos = "https://cran.rstudio.com") 似乎有效 .

  • 73

    我遇到的一件事是我的linux发行版提供的R版本(Ubuntu 14.04提供的R版本3.0.2)对于CRAN上可用的最新版本的软件包来说太旧了(在我的情况下, plyr 版本1.8 . 3截至今日) . 解决方案是使用我的发行版的打包系统,而不是尝试从R安装( apt-get install r-cran-plyr 得到我的 plyr 版本1.8.1) . 也许我本可以尝试使用 updateR() 更新R,但我是'm afraid that doing so would interfere with my distribution'的包管理器 .

  • -3

    在最新的R(3.2.3)中有一个错误,有时会阻止它找到正确的包 . 解决方法是手动设置存储库:

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

    other question找到解决方案

  • 1

    1. You can't spell

    要测试的第一件事是你正确拼写包的名称吗?包名称在R中区分大小写 .


    2. You didn't look in the right repository

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

    setRepositories()
    

    另见?setRepositories .

    要查看哪些存储库R将查找您的包,并选择一些其他存储库 . 至少,您通常需要选择 CRAN ,如果您使用Windows,则选择 CRAN (extras) ,如果您执行任何[gen / prote / metabol / transcript]组织生物分析,则需要 Bioc* 存储库 .

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


    3. The package is not in the repositories you selected

    使用返回所有可用的包

    ap <- available.packages()
    

    另见Names of R's available packages?available.packages .

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

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

    或者,可以在浏览器中查看可用包列表CRANCRAN (extras)BioconductorR-forgeRForgegithub .

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

    Warning: unable to access index for repository
    

    这可能表示所选CRAN存储库当前不可用 . 您可以使用 chooseCRANmirror() 选择其他镜像并再次尝试安装 .


    包裹可能无法使用的原因有多种 .


    4. You don't want a package

    也许你真的不想要一个包 . 关于a package and a library或包与数据集之间的区别,常常会感到困惑 .

    包装是延伸R的标准材料集合,例如,提供代码,数据或文档 . 库是一个地方(目录),R知道它可以找到它可以使用的包

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

    data()
    

    5. R or Bioconductor is out of date

    它可能依赖于更新版本的R(或其导入/依赖的其中一个软件包) . 看着

    ap["foobarbaz", "Depends"]
    

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

    library(installr)
    updateR()
    

    (当然,您可能需要先 install.packages("installr") . )

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

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

    6. The package is out of date

    它可能是archived(如果不再维护并且不再通过R CMD check测试) .

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

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

    另一种方法是从github CRAN镜像安装 .

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

    7. There is no Windows/OS X/Linux binary

    由于需要CRAN没有的其他软件,它可能没有Windows binary . 此外,某些软件包仅可通过某些或所有平台的源提供 . 在这种情况下, CRAN (extras) 存储库中可能有一个版本(参见上面的 setRepositories ) .

    如果软件包需要编译代码(例如C,C,FORTRAN),那么在Windows上安装Rtools或在OS X上安装伴随XCode的developer tools,并通过以下方式安装软件包的源版本:

    install.packages("foobarbaz", type = "source")
    
    # Or equivalently, for Bioconductor packages:
    source("http://bioconductor.org/biocLite.R")
    biocLite("foobarbaz", type = "source")
    

    在CRAN上,您可以通过查看描述中的 NeedsCompilation 标志来判断是否需要使用特殊工具从源代码构建包 .


    8. The package is on 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. There is no source version of the package

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

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

    this SO answer by imanuelc?install.packages的详细信息部分所述 .


    10. The package is in a non-standard repository

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

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

    另一方面,RHIPE不在类似CRAN的存储库中,并且有自己的installation instructions .

  • 8

    我有同样的问题(在Linux上)可以解决更改代理设置 . 如果您在代理服务器后面使用_中的 Sys.getenv("http_proxy") 检查配置 . 在我的 ~/.Renviron 中,我有以下行(来自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

  • 22

    当我使用bioconductor作为源然后调用biocLite时,它几乎总是对我有用 . 例:

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

    某些版本的 Rlibcurl 似乎存在问题 . 我在 Mac (R version 3.2.2)Ubuntu (R version 3.0.2) 上遇到了同样的问题,并且在两个实例中都只是通过在 install.packages 命令之前运行它来解决它

    options(download.file.method = "wget")
    

    该解决方案是由朋友提出的,但是,我无法在任何论坛中找到它,因此将答案提交给其他人 .

  • 3

    11. R (or another dependency) is out of date and you don't want to update it.

    警告这不是最佳做法 .

    • 下载包源 .

    • 导航到 DESCRIPTION 文件 .

    • 使用文本编辑器删除有问题的行,例如

    Depends: R (>= 3.1.1)
    
    • 从本地安装(即从 DESCRIPTION 的父目录安装),例如
    install.packages("foo", type="source", repos=NULL)
    
  • 3

    我在安装包“情绪”时遇到了同样的问题 . 开始搜索并尝试了许多命令 . 最后使用以下命令安装包:

    install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz")
    
  • 0

    从源代码安装R包时,我忘记了忘了放 repos=NULL . 在这种情况下,错误消息有点误导: package 'foobarbaz' is not available (for R version x.y.z)

    问题不在于R的版本,而是 repos 参数 . 我做了 install.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL) ,在这个场合为我工作 .

    希望这有助于某人 .

  • 0

    我通过仔细遵循instructions for installing R在Ubuntu上修复了这个错误 . 这包括:

    • deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ 添加到我的/etc/apt/sources.list文件中

    • 正在运行 sudo apt-get update

    • 正在运行 sudo apt-get install r-base-dev

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

  • 2

    当我得到相同的警告时,这是我最终可以在R-3.4.1中安装心理包的方法

    1:用Google搜索该包 .

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

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

    4:在本地浏览到下载地点并单击安装

    您可能会收到一条警告:依赖项'xyz'不适用于该软件包,然后首先从存储库中安装它们,然后执行步骤3-4 .

  • 2

    如上所述here(法语),当您的计算机上安装了两个版本的R时,就会发生这种情况 . 卸载最旧的一个,然后再次尝试安装包!它对我来说很好 .

  • 4

    这个解决方案可能会破坏R,但这是一个最简单的解决方案,可以在99%的时间内运行

    你需要做的只是:

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

    正如作者所提到的here

  • 8

    devtools GitHub . 这3行(帮我解决了这个错误)还没有提到:

    install.packages("devtools")  # if not already installed
    library(devtools)
    install_git("https://github.com/profile/foobarbaz_repository")
    
  • 9

    这节省了我很多时间调试错误 . 在许多情况下,镜子已经过时了 . 此函数可以使用 https://cran.rstudio.com/ 安装多个包及其依赖项:

    packages <- function(pkg){
        new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
        if (length(new.pkg))
            install.packages(new.pkg, dependencies = TRUE, repos='https://cran.rstudio.com/')
        sapply(pkg, require, character.only = TRUE)
    }
    
    packages(c("foo", "bar", "baz"))
    

相关问题