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

How should I deal with "package 'xxx' is not available (for R version x.y.z)" warning?

提问人:Richie Cotton 提问时间:9/8/2014 最后编辑:zx8754Richie Cotton 更新时间:10/5/2023 访问量:973583

问:

我尝试安装一个软件包,使用

install.packages("foobarbaz")

但收到了警告

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

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

另请参阅以下问题,这些问题涉及此问题的特定实例:

我的包不适用于 R 2.15.2 包“Rbbg”不可用(适用于 R 版本 2.15.2)包“Rbbg”不可用(适用于 R 版本 2.15.2)Package is not available (for R version 2.15.2


包 doMC 不适用于 R 版本 3.0.0 install.packages
中的警告 依赖项“Rglpk”不适用于包“fPortfolio”
当一个包不适用于我们的 R 版本时该怎么办?
的 bigvis 包是否不适用于 R 版本 3.0.1?
包“syncwave”/“mvcwt”不可用(适用于 R 版本 3.0.2) 包“diamonds”不可用(适用于 R 版本 3.0.0)

plyr 包是否不适用于 R 版本 3.0.2?
软件包 bigmemory 未安装在 R 64 3.0.2 上 软件包“makeR”不可用(适用于版本 3.0.2
) 软件包“RTN”不可用(适用于 R 版本 3.0.1) 安装 geoR 软件包时遇到问题 软件包
twitterR”不可用(适用于 R 版本 3.1.0)


如何安装“Rcpp,包?我收到“包不可用”包“数据集”
不可用(适用于 R 版本 3.1.1)“包”rhipe“不可用(适用于 R 版本 3.1.2)”

安装 存储库 R-FAQ

评论

12赞 Joris Meys 9/8/2014
请注意,使用 RStudio 时,从 CRAN 以外的其他存储库进行安装时,也会收到此警告。这是一个我已经报告过几次的错误,但我不知道它是否已经排序了。

答:

703赞 31 revs, 8 users 92%Richie Cotton #1

1.你不会拼写

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


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

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

setRepositories()

另请参见 ?setRepositories

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

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


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

使用

ap <- available.packages()

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

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

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

或者,可以在浏览器中查看 CRANCRAN(附加功能)、BioconductorR-forgeRForgeGitHub 的可用软件包列表。

与 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 检查测试)。

在这种情况下,您可以使用 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)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")

(与 一样,您可能需要先这样做。installrinstall.packages("remotes")


9. 软件包没有源版本

尽管包的二进制版本可用,但源版本不可用。您可以通过设置

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

imanuelc 的 SO 答案?install.packages 的 Details 部分所述。


10. 软件包位于非标准存储库中

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

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

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

18赞 dardisco 6/1/2015 #2

11. R(或其他依赖项)已过期,您不想更新它。

警告:这并不完全是最佳实践。

  • 下载包源。
  • 导航到该文件。DESCRIPTION
  • 使用文本编辑器删除有问题的行,例如

    Depends: R (>= 3.1.1)
    
  • 从本地安装(即从 的父目录安装),例如DESCRIPTION

    install.packages("foo", type="source", repos=NULL)
    

评论

9赞 jangorecki 4/18/2016
通常说对 R 版本的依赖是有原因的,检查这种更改可能会破坏什么可能是明智的。
1赞 Farid Cheraghi 10/25/2021
install.packages("local/pkg",repos=NULL)就够了
15赞 bli 7/8/2015 #3

发生在我身上的一件事是,我的 linux 发行版提供的 R 版本(Ubuntu 14.04 提供的 R 版本 3.0.2)对于 CRAN 上可用的最新版本的软件包来说太旧了(就我而言,截至今天的 1.8.3 版)。解决方案是使用我的发行版的打包系统,而不是尝试从 R 安装(为我提供了 1.8.1 版)。也许我可以尝试使用 更新R,但我担心这样做会干扰我的发行版的包管理器。plyrapt-get install r-cran-plyrplyrupdateR()


编辑(2020 年 4 月 8 日):在 CRAN 中更新软件包后,我最近遇到了一个问题,据报道,软件包 (XML) 不适用于我的 R 版本(3.6.3,Debian stretch 上最新支持)。这是非常出乎意料的,因为我之前已经成功安装了它(在相同版本的 R 和相同的操作系统上)。

出于某种原因,该软件包仍然存在,但只查看更新(且不兼容)的版本。解决方案是找到兼容版本的 URL 并强制使用它,如下所示:install.packagesinstall.packages

install.packages("https://cran.r-project.org/src/contrib/Archive/XML/XML_3.99-0.3.tar.gz", repos=NULL, type="source", ask=FALSE)

评论

0赞 Joris Meys 6/20/2017
对于 Ubuntu 的问题,请查看 README: cran.r-project.org/bin/linux/ubuntu/README
0赞 Justapigeon 7/3/2019
这个解决方案对我有用,适用于 debian 所依赖的软件包。命令是mvtnormksapt-get install r-cran-mvtnorm
1赞 BioProgram 1/4/2016 #4

当我使用生物导体作为源然后调用biocLite时,它几乎总是对我有用。例:

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

评论

1赞 Joris Meys 6/20/2017
这仅适用于生物导体包装,这也是必须安装生物导体包装的方式。
0赞 bli 6/20/2017
@JorisMeys 在我看来,到目前为止,我尝试安装的所有软件包都可以通过这种方法获得,但我主要将 R 用于生物信息学。
1赞 bli 6/21/2017
@JorisMeys我不知道怎么做,但能够在 cran 上透明地获取这些包并安装它们。我刚刚测试了(在 Xubuntu 16.04 上,如果这很重要的话)。为了尽可能避免混乱,我现在尝试以“相同的方式”安装所有软件包(目前使用 )。biocLitedplyrbiocLite
2赞 Joris Meys 6/21/2017
@bli你是对的,我纠正了。中的代码识别包的正确存储库,然后调用以执行实际安装。但它不起作用,因为你使用 .它之所以有效,是因为做了它应该做的事情。除了开销之外,使用 和 之间没有区别,而且默认情况下还会更新它认为必要的所有其他包。所以我仍然建议用于非生物导体包装。biocLiteinstall.packages()biocLiteinstall.packages()biocLite()install.packages()biocLite()install.packages()
2赞 Joris Meys 6/21/2017
@bli它不能保证兼容性,它会将所有内容更新到最新版本(除非您将 ).这与调用然后 .因为这实际上是在引擎盖下所做的。suppressUpdates = TRUEupdate.packages()install.packages()biocLite
10赞 Tombart 2/23/2016 #5

这为我节省了大量时间来调试问题所在。在许多情况下,只是过时的镜子。此函数可以使用以下命令安装多个包及其依赖项: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"))
116赞 Dmitry 3/3/2016 #6

在 R 3.2.3(2016 年新增)中,存在一个错误,有时无法找到正确的包。解决方法是手动设置存储库:

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

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

评论

5赞 adempewolff 4/4/2016
怀疑是这种情况。然而,这似乎是 r-studio 中的一个错误。我刚刚进行了测试,如果我只是从终端启动 R,则不需要设置存储库 - 只能从 r-studio 中启动。
0赞 Md Sabbir Ahmed 7/6/2021
在安装软件包时对我不起作用。rbokeh
2赞 Evan 9/30/2022
这在 Windows 上的 R 4.2.1 中对我有用。也许我的工作网络以某种方式阻止了这些类型的请求 - 我必须对 Python 和 PIP 做类似的事情。
0赞 Marc in the box 10/21/2022
这帮助我在服务器上安装了一个包(即不是通过 RStudio)
0赞 user1700890 6/20/2023
对我来说,这个解决方案也适用于 R 4.0.4。如果有人能澄清如何解决根本原因,我会很棒。
25赞 Saba 3/18/2016 #7

和的某些版本似乎存在问题。我遇到了同样的问题,在这两种情况下,只需在命令之前运行它即可解决RlibcurlMac (R version 3.2.2)Ubuntu (R version 3.0.2)install.packages

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

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

4赞 Alex 8/29/2016 #8

我通过仔细按照安装 R 的说明在 Ubuntu 上修复了此错误。这包括:

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

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

评论

0赞 Belter 4/27/2017
这种方式确实解决了我的问题,但仍然将我的R更新到最新版本(从到)。如果你想更新你的 R,这是一个很好的方法。3.023.4
0赞 Jack Wasey 12/31/2016 #9

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

  1. 默认设置是,这无法获得许多包。reposMRAN
  2. 该版本的 R 没有 ,因此,例如:似乎有效。httpsinstall.packages("knitr", repos = "https://cran.rstudio.com")
0赞 Clément F 3/8/2017 #10

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

3赞 nachti 4/14/2017 #11

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

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

将其更改为

http_proxy="http://user:[email protected]:port"

解决了问题。您可以对 执行相同的操作。https

当我读到“软件包 xxx 不适用于 r 版本-x-y-z”时,这不是第一个想法......

HTH型

6赞 Biboswan 8/6/2017 #12

当我收到相同的警告时,这就是我最终可以在 R-3.4.1 中安装 psych 包所能做的

1:在谷歌上搜索该包裹。

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

3:选择选项“包存档文件(.zip;)。tar.gz)“,用于在 R 中安装包

4:在本地浏览到下载位置,点击安装

您可能会收到警告:依赖项“xyz”不适用于软件包,然后首先从存储库安装这些依赖项,然后执行步骤 3-4 .

5赞 Damjan Temelkovski 6/26/2018 #13

我犯了一个错误,忘记在从源代码安装 R 包时放置。在这种情况下,错误消息略有误导性:repos=NULLpackage 'foobarbaz' is not available (for R version x.y.z)

问题不在于 R 的版本,而在于参数。在这种情况下,我做了对我有用的事情。reposinstall.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL)

希望这对某人有所帮助。

评论

1赞 Ajay B 6/26/2018
当我尝试install.packages('foobarbaz', repos=NULL)时,我收到错误“install.packages(”pair“, repos = NULL)中的错误:type == ”both“不能与'repos = NULL'一起使用”
1赞 Damjan Temelkovski 7/28/2018
感谢您的评论 - 我想我忘了写参数,因为我提到我从源代码安装了这个包,我会编辑答案。type="source"
29赞 PaladiN 9/7/2018 #14

此解决方案可能会破坏 R,但这是一个最简单的解决方案,可在 99% 的时间内工作。

您需要做的就是:

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

正如作者在这里提到的

3赞 SibyllWang 11/8/2019 #15

另一个原因+解决方案

尝试在公司的 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.packages("package name", repos = "a newer CRAN than your company's archaic CRAN snapshot")

22赞 Lim 2/9/2020 #16
  1. 访问 https://cran.r-project.org/src/contrib/Archive/
  2. 找到要安装的软件包Ctrl + F
  3. 单击软件包名称
  4. 确定要安装的版本
  5. 打开 RStudio
  6. 键入 ”install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")"

在某些情况下,您需要提前安装多个软件包才能使用要使用的软件包。

例如,我需要安装 7 个包(、、、)来安装包。SejonghashrJavatauRSQLitedevtoolsstringrKoNLP

install.packages('Sejong')
install.packages('hash')
install.packages('rJava')
install.packages('tau')
install.packages('RSQLite')
install.packages('devtools')
install.packages('stringr')

library(Sejong)
library(hash)
library(rJava)
library(tau)
library(RSQLite)
library(devtools)
library(stringr)

install.packages("https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.2.tar.gz", repos = NULL, type="source")
library(KoNLP)
2赞 Pablo Adames 4/2/2020 #17

我发现 #6 包装的细微变化与 @Richie Cotton 的出色解决方案过时了。

有时,包维护者可能会显示它不支持的 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) 之间进行了重大更新。rattle

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

library("devtools")
install_version("rattle", version = "5.2.0", repos = "http://cran.us.r-project.org")
3赞 Ferus 4/29/2020 #18

就我而言,解决方案是简单地升级 R。

0赞 SegaSta 10/5/2023 #19

使用帮助了我 首先,尝试安装必要的库:library(remotes)

install_version("foobarbaz", "0.1.2")

然后查看它需要哪些依赖项并以错误结束,并手动安装它们
我以我的语言版本的发布日期为指导,并据此安装了必要版本的库
install_version()