ChatGPT解决这个技术问题 Extra ChatGPT

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


3
31 revs, 8 users 92%

1.你不会拼写

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

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

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

setRepositories()

另见?setRepositories

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

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

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

使用返回所有可用的包

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.你不想要一个包裹

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

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

它可能是 archived(如果它不再维护并且不再通过 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 binary。此外,某些软件包只能通过某些或所有平台的源获得。在这种情况下,CRAN (extras) 存储库中可能有一个版本(请参阅上面的 setRepositories)。

如果包需要编译代码(例如 C、C++、FORTRAN),那么在 Windows 上安装 Rtools 或在 OS X 上安装 developer tools 随附的 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")

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

10. 包在非标准仓库

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

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

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


我认为值得一提的是,installr 仅适用于 Windows
C
Community

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

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

other question 中找到解决方案


怀疑是这种情况。然而,这似乎是 r-studio 中的一个错误。我刚刚测试过,如果我只是从终端启动 R,我不需要设置存储库——仅从 r-studio 中启动。
在安装软件包 rbokeh 时对我不起作用。
N
NelsonGon

这个解决方案可能会破坏 R,但这是一个最简单的解决方案,它在 99% 的时间内都有效。

你需要做的只是:

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

正如作者在 here 上提到的


u
user2100721

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

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

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


L
Lim

访问 https://cran.r-project.org/src/contrib/Archive/。使用 Ctrl + F 找到要安装的包 点击包名 确定要安装的版本 打开 RStudio 键入 "install.packages("https://cran.r-project.org/src/contrib/Archive/[包名]/[版本号].tar.gz", repos = NULL, type="source")"

在某些情况下,您需要预先安装几个包才能使用您要使用的包。

例如,我需要安装 7 个包(SejonghashrJavatauRSQLitedevtoolsstringr)来安装 KoNLP 包。

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)

d
dardisco

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

警告这并不是最佳实践。

下载包源。

导航到说明文件。

使用文本编辑器删除违规行,例如 Depends: R (>= 3.1.1)

从本地安装(即从DESCRIPTION的父目录)例如 install.packages("foo", type="source", repos=NULL)


通常声明对 R 版本的依赖是有原因的,检查这种更改可能会破坏什么可能是明智的。
install.packages("local/pkg",repos=NULL) 就足够了
b
bli

发生在我身上的一件事是我的 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,但我担心这样做会干扰我的发行版的包管理器。

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

出于某种原因,软件包仍然存在,但 install.packages 只查看更新(且不兼容)的版本。解决办法是找到兼容版本的网址,强制install.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)

有关 Ubuntu 的问题,请查看自述文件:cran.r-project.org/bin/linux/ubuntu/README
对于 ks 所依赖的包 mvtnorm,此解决方案适用于 debian。命令是 apt-get install r-cran-mvtnorm
h
hd1

这为我节省了很多时间来调试问题所在。在许多情况下只是过时的镜子。此函数可以使用 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"))

B
Biboswan

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

1:谷歌搜索那个包。

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

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

4:本地浏览到下载的地方点击安装

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


D
Damjan

从源代码安装 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),在这个场合对我有用。

希望这可以帮助某人。


当我尝试 install.packages('foobarbaz', repos=NULL) 时出现错误“ install.packages("pair", repos = NULL) 中的错误:type == "both" cannot be used with 'repos = NULL'"
感谢您的评论 - 我想我忘了写 type="source" 参数,因为我提到我从源代码安装了这个包,我会编辑答案。
A
Alex

通过仔细遵循 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 下载镜像来代替我的多伦多大学。


这种方式确实解决了我的问题,但仍将我的 R 更新到最新版本(从 3.023.4)。如果您想更新您的 R,这是一个不错的方法。
n
nachti

我有同样的问题(在 Linux 上),可以通过更改代理设置来解决。如果您在代理服务器后面,请使用 R 中的 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 执行相同的操作。

当我读到“package xxx is not available for r version-xyz”时,这不是第一个想法......

高温高压


S
SibyllWang

另一个原因+解决方案

尝试在我公司 HPC 上的 RStudio 中安装 pkgdown 时遇到此错误(“包 XXX 不适用于 R 版本 XXX”)。

事实证明,他们在 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")


P
Pablo Adames

我发现#6 包的细微变化与@Richie Cotton 的优秀解决方案相比已过时。

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

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

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

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

F
Ferus

在我的情况下,解决方案是简单地升级 R。


T
Tunaki

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

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

这仅适用于生物导体包,这也是必须安装生物导体包的方式。
@JorisMeys 在我看来,到目前为止我尝试安装的所有软件包都可以通过这种方法获得,但我主要将 R 用于生物信息学。
@JorisMeys 我不知道如何,但 biocLite 能够透明地在 cran 上获取这些包并安装它们。我刚刚测试了 dplyr(在 Xubuntu 16.04 上,如果重要的话)。希望尽可能避免混乱,我现在尝试“以相同方式”安装所有软件包(当前使用 biocLite)。
@bli 你是对的,我的立场是正确的。 biocLite 中的代码识别包的正确存储库,然后调用 install.packages() 进行实际安装。但它不起作用,因为您使用了 biocLite。它之所以有效,是因为 install.packages() 做了它应该做的事情。使用 biocLite()install.packages() 之间没有区别,除了开销和 biocLite() 默认情况下还会更新它认为必要的所有其他包这一事实。所以我仍然建议将 install.packages() 用于非生物导体包装。
@bli 它不保证兼容性,它会将所有内容更新到最新版本(除非您输入 suppressUpdates = TRUE)。这与调用 update.packages() 然后调用 install.packages() 相同。因为这实际上就是 biocLite 在幕后所做的。
J
Jack Wasey

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

默认的 repos 设置是 MRAN,这无法获取很多包。该版本的 R 没有 https,因此,例如: install.packages("knitr", repos = "https://cran.rstudio.com") 似乎可以工作。


C
Clément F

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅