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

时间:2014-09-08 10:11:07

标签: r installation repository package r-faq

18 个答案:

答案 0 :(得分:487)

<强> 1。你不能拼写

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


<强> 2。您没有查看正确的存储库

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

setRepositories()

另见?setRepositories

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

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


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

使用

返回所有可用的包
ap <- available.packages()

另请参阅Names of R's available packages?available.packages

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

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

或者,可以在浏览器中查看可用包列表CRANCRAN (extras)BioconductorR-forgeRForge和{{ 3}}

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

Warning: unable to access index for repository

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


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


<强> 4。您不需要包

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

  

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

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

data()

<强> 5。 R或Bioconductor已过期

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

ap["foobarbaz", "Depends"]

并考虑将R安装更新为当前版本。在Windows上,这最容易通过a package and a library包完成。

library(installr)
updateR()

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

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

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

<强> 6。包裹已过期

可能是installr(如果不再维护,不再通过archived次测试)。

在这种情况下,您可以使用R CMD check

加载旧版本的软件包
library(remotes)
install_version("foobarbaz", "0.1.2")

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

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

<强> 7。没有Windows / OS X / Linux二进制文件

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

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

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上有一个存储库。这些包需要安装developer tools包。

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

remotesthis SO answer by imanuelc的详细信息部分所述。


<强> 10。该软件包位于非标准存储库中

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

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

Rbbg不在类似CRAN的存储库中,并且有自己的RHIPE

答案 1 :(得分:80)

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

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

other question

中找到解决方案

答案 2 :(得分:23)

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

之前运行它就可以解决问题
options(download.file.method = "wget")

该解决方案是由朋友提出的,然而,我还没有能够在任何论坛中找到它,因此将答案提交给其他人。

答案 3 :(得分:13)

  1. 访问https://cran.r-project.org/src/contrib/Archive/
  2. 使用Ctrl + F
  3. 查找要安装的软件包
  4. 单击包名称
  5. 确定要安装的版本
  6. 打开RStudio
  7. 输入“ install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")

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

例如,我需要安装7个软件包(SejonghashrJavatauRSQLitedevtools,{ {1}})来安装stringr软件包。

KoNLP

答案 4 :(得分:11)

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

警告这不是最佳做法。

  • 下载包源。
  • 导航至saver = [[configurations alloc]init]; currentUser *tmpUser = [saver loadCustomObject]; thisUser = [currentUser instance]; static dispatch_once_t once; dispatch_once(&once, ^ { if(tmpUser != nil){ if(![tmpUser.username isEqualToString:@""]){ for(Friend *savedFriend in tmpUser.FriendsList) { [thisUser addFriend:savedFriend]; } thisUser.username = tmpUser.username; thisUser.email = tmpUser.email; thisUser.userID = tmpUser.userID; thisUser.userPSW = tmpUser.userPSW; thisUser.userImg = tmpUser.userImg; }); 文件。
  • 使用文字编辑器删除有问题的行,例如

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

    DESCRIPTION

答案 5 :(得分:10)

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

您需要做的只是:

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

如作者在here上所述

答案 6 :(得分:8)

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

答案 7 :(得分:8)

这节省了我很多时间来调试错误。在许多情况下,镜子已经过时了。此函数可以使用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"))

答案 8 :(得分:4)

我通过仔细关注instructions for installing R在Ubuntu上修复了此错误。其中包括:

  1. deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/添加到我的/etc/apt/sources.list文件
  2. 正在运行sudo apt-get update
  3. 正在运行sudo apt-get install r-base-dev
  4. 对于第1步,如果您愿意,可以选择任何CRAN下载镜像代替我的多伦多大学。

答案 9 :(得分:4)

当我得到相同的警告

时,我最终可以在R-3.4.1中安装心理包

1:用Google搜索该包。

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

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

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

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

答案 10 :(得分:3)

我遇到了同样的问题(在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执行相同操作。

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

HTH

答案 11 :(得分:2)

从源代码安装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),在这种情况下对我有用。

希望这对某人有帮助。

答案 12 :(得分:1)

对于我来说,解决方案是简单地升级R。

答案 13 :(得分:1)

我发现@Richie Cotton的出色解决方案对#6包装已经过时进行了细微改动。

有时,软件包维护者可能会显示它不支持的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")

答案 14 :(得分:1)

另一个原因+解决方案

尝试在公司的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")

答案 15 :(得分:1)

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

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

答案 16 :(得分:0)

尝试使用泊坞窗图片id

尝试测试旧版本时的另一个小增加
  1. 默认1设置为rocker/r-ver:3.1.0,但无法获得多个软件包。
  2. 那个版本的R没有repos,所以,例如: MRAN似乎有效。

答案 17 :(得分:-1)

正如前面提到的perform(_:on:with:waitUntilDone:)(法语),当您的计算机上安装了两个版本的R时,就会发生这种情况。卸载最旧的一个,然后再次尝试安装包!它对我来说很好。