Comment dois-je faire face à l'avertissement «Le package« xxx »n'est pas disponible (pour la version R xyz)»?

561

J'ai essayé d'installer un package en utilisant

install.packages("foobarbaz")

mais a reçu l'avertissement

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

Pourquoi R ne pense-t-il pas que le package est disponible?

Voir également ces questions se référant à des cas spécifiques de ce problème:

Mon package ne fonctionne pas pour R 2.15.2
package 'Rbbg' n'est pas disponible (pour R version 2.15.2)
package n'est pas disponible (pour R version 2.15.2)
package doMC NON disponible pour R version 3.0.0 avertissement dans install.packages La
dépendance 'Rglpk' n'est pas disponible pour le package 'fPortfolio'
Que faire lorsqu'un package n'est pas disponible pour notre version R?
Le package bigvis pour R n'est-il pas disponible pour R version 3.0.1?
le package 'syncwave' / 'mvcwt' n'est pas disponible (pour R version 3.0.2) le
package 'diamonds' n'est pas disponible (pour R version 3.0.0)
Le package plyr pour R n'est-il pas disponible pour R version 3.0.2?
Le package bigmemory ne s'installe pas sur R 64 3.0.2 le
package "makeR" n'est pas disponible (pour la version 3.0.2)
le package 'RTN' n'est pas disponible (pour R version 3.0.1)
Problème d'installation du package geoR le package
'twitterR' n'est pas disponible (pour R version 3.1.0)
Comment installer 'Rcpp, package? J'ai "package n'est pas disponible"
package 'dataset' n'est pas disponible (pour R version 3.1.1)
"package 'rhipe' n'est pas disponible (pour R version 3.1.2)"

Richie Cotton
la source
9
Notez que lorsque vous utilisez RStudio, vous obtenez également cet avertissement lors de l'installation à partir d'un autre référentiel que CRAN. C'est un bug que j'ai déjà signalé plusieurs fois, mais je ne sais pas s'il est déjà trié.
Joris Meys

Réponses:

563

1. Vous ne pouvez pas épeler

La première chose à tester est l' orthographe correcte du nom du package? Les noms de packages sont sensibles à la casse dans R.


2. Vous n'avez pas regardé dans le bon référentiel

Ensuite, vous devriez vérifier si le package est disponible. Type

setRepositories()

Voir aussi ? SetRepositories .

Pour voir quels référentiels R recherchera votre package et en sélectionner éventuellement d'autres. À tout le moins, vous voudrez généralement CRANêtre sélectionné, et CRAN (extras)si vous utilisez Windows, et les Bioc*référentiels si vous en faites[gen / prote / metabol / transcript] omics analyses biologiques.

Pour changer cela définitivement, ajoutez une ligne similaire setRepositories(ind = c(1:6, 8))à votre Rprofile.sitefichier.


3. Le package ne se trouve pas dans les référentiels que vous avez sélectionnés

Renvoyez tous les packages disponibles en utilisant

ap <- available.packages()

Voir aussi les noms des paquets disponibles de R , ? Available.packages .

Comme il s'agit d'une grande matrice, vous souhaiterez peut-être utiliser la visionneuse de données pour l'examiner. Alternativement, vous pouvez rapidement vérifier si le package est disponible en testant les noms de ligne.

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

Alternativement, la liste des packages disponibles peut être consultée dans un navigateur pour CRAN , CRAN (extras) , Bioconductor , R-forge , RForge et github .

Un autre message d'avertissement possible que vous pouvez recevoir lors de l'interaction avec les miroirs CRAN est:

Warning: unable to access index for repository

Ce qui peut indiquer que le référentiel CRAN sélectionné est actuellement indisponible. Vous pouvez sélectionner un autre miroir avec chooseCRANmirror()et réessayer l'installation.


Il existe plusieurs raisons pour lesquelles un package peut ne pas être disponible.


4. Vous ne voulez pas de colis

Peut-être que vous ne voulez pas vraiment de package. Il est courant de confondre la différence entre un package et une bibliothèque , ou un package et un ensemble de données.

Un package est une collection standardisée de documents étendant R, par exemple en fournissant du code, des données ou de la documentation. Une bibliothèque est un endroit (répertoire) où R sait trouver les packages qu'il peut utiliser

Pour voir les jeux de données disponibles, tapez

data()

5. R ou le bioconducteur est obsolète

Il peut dépendre d'une version plus récente de R (ou de l'un des packages dont il importe / dépend). Regarder

ap["foobarbaz", "Depends"]

et envisagez de mettre à jour votre installation R vers la version actuelle. Sous Windows, cela se fait plus facilement via le installrpackage.

library(installr)
updateR()

(Bien sûr, vous devrez peut-être d' install.packages("installr")abord.)

De manière équivalente pour les packages Bioconductor, vous devrez peut-être mettre à jour votre installation Bioconductor.

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

6. Le colis est obsolète

Il peut avoir été archivé (s'il n'est plus maintenu et ne passe plus les R CMD checktests).

Dans ce cas, vous pouvez charger une ancienne version du package en utilisant install_version()

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

Une alternative consiste à installer à partir du miroir github CRAN.

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

7. Il n'y a pas de binaire Windows / OS X / Linux

Il peut ne pas avoir de binaire Windows car il nécessite des logiciels supplémentaires que CRAN n'a pas. De plus, certains packages sont disponibles uniquement via les sources pour certaines ou toutes les plateformes. Dans ce cas, il peut y avoir une version dans le CRAN (extras)référentiel (voir setRepositoriesci - dessus).

Si le package nécessite la compilation de code (par exemple C, C ++, FORTRAN), sur Windows installez Rtools ou sur OS X, installez les outils de développement accompagnant XCode et installez la version source du package via:

install.packages("foobarbaz", type = "source")

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

Sur CRAN, vous pouvez savoir si vous aurez besoin d'outils spéciaux pour construire le package à partir des sources en regardant l' NeedsCompilationindicateur dans la description.


8. Le paquet est sur github / Bitbucket / Gitorious

Il peut avoir un référentiel sur Github / Bitbucket / Gitorious. Ces packages nécessitent l' remotesinstallation du package.

library(remotes)
install_github("packageauthor/foobarbaz")
install_bitbucket("packageauthor/foobarbaz")
install_gitorious("packageauthor/foobarbaz")

(Comme avec installr, vous devrez peut-être d' install.packages("remotes")abord.)


9. Il n'y a pas de version source du paquet

Bien que la version binaire de votre package soit disponible, la version source ne l'est pas. Vous pouvez désactiver cette vérification en définissant

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

comme décrit dans cette réponse SO par imanuelc et la section Détails de ?install.packages.


10. Le package est dans un référentiel non standard

Votre package se trouve dans un référentiel non standard (par exemple Rbbg). En supposant qu'il soit raisonnablement conforme aux normes CRAN, vous pouvez toujours le télécharger en utilisant install.packages; il vous suffit de spécifier l'URL du référentiel.

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

RHIPEd'autre part n'est pas dans un référentiel de type CRAN et a ses propres instructions d'installation .

coton Richie
la source
2
@KonradRudolph Viewfonctionne également dans R GUI, Architect, Revo-R et Live-R. N'ont pas essayé dans emacs / ESS.
Richie Cotton
Ah, ma mauvaise. J'ai pensé avoir vérifié et trouvé que la fonction n'existait pas. Ça marche bien sûr (mais ça ne marche pas pour moi sur OS X… ).
Konrad Rudolph
9
Je pense qu'il vaut la peine de mentionner que cela installrne fonctionne que sur les fenêtres
David Arenburg
2
«Il est courant d'être confus quant à la différence entre un package et une bibliothèque» - eh bien, duh: les développeurs R eux-mêmes sont confus à ce sujet. Sinon, comment expliquer la fonction library? Cependant, dans cette veine, cette réponse ne devrait-elle pas mentionner / expliquer .libPaths? Les chemins de bibliothèque non définis ou non inscriptibles semblent être l'un des problèmes les plus courants lors de l'installation de packages.
Konrad Rudolph
1
Je suggérerais d'inclure un autre point: essayer d'installer des packages qui viennent à l'intérieur de r-core, comme dans cette question , dans lequel tente d'installer le parallelpackage, alors qu'il est déjà dans r-core
Sergio Fernández
90

Dans la dernière version R (3.2.3), il y a un bogue qui l'empêche parfois de trouver le bon paquet. La solution consiste à définir manuellement le référentiel:

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

Solution trouvée dans une autre question

Dmitry
la source
4
Suspecté que ce soit le cas. Il semble cependant que ce soit un bug dans r-studio. Je viens de tester et je n'ai pas besoin de définir le référentiel si je lance simplement R depuis le terminal - uniquement depuis r-studio.
adempewolff
Et 3.5.1 également. Avant de définir dependencieset repos, R n'a pas pu se connecter https://mirrors.sorengard.com/cran/src/contrib/PACKAGES(et le dépannage dans une autre question n'a donc pas fonctionné). Après, j'ai pu accéder à ce site même si les paquets ne se chargent toujours pas de manière simple.
user3386170
Également sur mon autre ordinateur doté de la version 3.5.0.
user3386170
J'essaie de charger buvard et quantstrat dans la version 3.6.0, et j'ai utilisé ce code, mais en vain: "Avertissement dans install.packages: le package 'quantstrat' n'est pas disponible (pour R version 3.6.0)". D'autres suggestions?
W Barker
Eu le même problème avec e1071et R 3.6.1 sur macOS High Sierra. Merci de votre aide
Igor F.
25

Il semble y avoir un problème avec certaines versions de Ret libcurl. J'ai eu le même problème sur Mac (R version 3.2.2)et Ubuntu (R version 3.0.2)et dans les deux cas, il a été résolu simplement en exécutant cela avant la install.packagescommande

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

La solution a été suggérée par un ami, cependant, je n'ai pu la trouver dans aucun des forums, soumettant ainsi cette réponse à d'autres.

Saba
la source
2
pour ma configuration, après avoir curlinstallé apt dans Ubuntu et l'ancienne version R 2.15.0, le install.packages(..., method="curl")problème a été résolu
jangorecki
Je devais faire method="curl"plutôt que wget, mais cela a résolu le problème
Jeff
install_versionen devtoolsm'a aidé à contourner cela. Mon Mac n'aimait pas non wgetplus. (J'avais R 3.2.3 qui se plaignait de ne pas pouvoir trouver un paquet d'archives en utilisant http://. D'autres paquets s'installaient très bien)
D. Woods
Cela a fonctionné pour moi avec une installation de R 3.2.2 sur Ubuntu Linux 64 bits
Darren Wilkinson
22

Cette solution peut casser R mais voici une solution plus simple qui fonctionne 99% du temps.

Vous devez simplement:

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

Comme mentionné par l'auteur ici

Paladin
la source
2
et que 1% c'est moi: / install.packages ('graph', repos = ' cran.us.r-project.org' )
Sahil Nagpal
J'ai essayé d'installer le package à l' stringraide de cette commande, mais cela a échoué pour moi. install.packages('stringr',repos = "http://cran.us.r-project.org", dependencies = TRUE) Installing package into ‘/usr/lib/spark/R/lib’ (as ‘lib’ is unspecified) Warning: unable to access index for repository http://cran.us.r-project.org/src/contrib: cannot open URL 'http://cran.us.r-project.org/src/contrib/PACKAGES' Warning message: package ‘stringr’ is not available (for R version 3.4.1)
Regressor
on dirait que je fais aussi partie du 1%, ça n'a pas marché pour moi
NetEmmanuel
15

11. R (ou une autre dépendance) est obsolète et vous ne souhaitez pas le mettre à jour.

Attention, ce n'est pas exactement la meilleure pratique.

  • Téléchargez la source du package.
  • Accédez au DESCRIPTIONfichier.
  • Supprimez la ligne incriminée avec votre éditeur de texte, par exemple

    Depends: R (>= 3.1.1)
  • Installer depuis local (ie depuis le répertoire parent de DESCRIPTION) par exemple

    install.packages("foo", type="source", repos=NULL)
dardisco
la source
7
La dépendance généralement déclarée à l'égard de la version R existe pour une raison, il peut être judicieux de vérifier ce qu'un tel changement risque de casser.
jangorecki
1
@dardisco N'a pas supprimé la dépendance, mais grâce à votre commentaire, j'ai trouvé les dépendances et je vois que j'ai juste besoin de mettre à niveau R. Merci
sa_zy
9

Une chose qui m'est arrivée est que la version de R fournie par ma distribution Linux (R version 3.0.2 fournie par Ubuntu 14.04) était trop ancienne pour la dernière version du package disponible sur CRAN (dans mon cas, la plyrversion 1.8.3 à ce jour). La solution a été d'utiliser le système de packaging de ma distribution au lieu d'essayer d'installer à partir de R ( apt-get install r-cran-plyrm'a obtenu la version 1.8.1 de plyr). Peut-être que j'aurais pu essayer de mettre à jour R en utilisant updateR(), mais j'ai peur que cela interfère avec le gestionnaire de paquets de ma distribution.

bli
la source
Pour les problèmes avec Ubuntu, consultez le fichier README: cran.r-project.org/bin/linux/ubuntu/README
Joris Meys
Cette solution a fonctionné pour moi pour Debian pour le paquet mvtnormqui en ksdépend. Command was apt-get install r-cran-mvtnorm
was
8

Cela m'a fait gagner beaucoup de temps à déboguer ce qui ne va pas. Dans de nombreux cas, les miroirs ne sont plus à jour. Cette fonction peut installer plusieurs packages avec leurs dépendances en utilisant 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"))
Tombart
la source
6

C'est ce que j'ai finalement pu faire pour installer le paquet psych dans R-3.4.1 quand j'ai reçu le même avertissement

1: Googlé pour ce package.

2: téléchargé manuellement avec l'extension tar.gz

3: Choisissez l'option "Package Archive File (.zip; .tar.gz)" pour installer les packages dans R

4: parcouru localement à l'endroit où il a été téléchargé et cliqué sur installer

Vous pouvez recevoir un avertissement: les dépendances 'xyz' ne sont pas disponibles pour le package, puis installez-les d'abord à partir du référentiel, puis effectuez les étapes 3 à 4.

Biboswan
la source
4

Je fixe cette erreur sur Ubuntu en suivant scrupuleusement les instructions d'installation R . Cela comprenait:

  1. ajouter deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ à mon fichier /etc/apt/sources.list
  2. Fonctionnement sudo apt-get update
  3. Fonctionnement sudo apt-get install r-base-dev

Pour l'étape 1, vous pouvez choisir n'importe quel miroir de téléchargement CRAN à la place de mon miroir de l'Université de Toronto si vous le souhaitez.

AlexG
la source
De cette façon, j'ai résolu mon problème, mais toujours mettre à jour mon R vers la dernière version (de 3.02à 3.4). Si vous souhaitez mettre à jour votre R, c'est une bonne façon.
Belter
4

J'ai fait l'erreur d'oublier de mettre repos=NULLlors de l'installation du package R à partir du code source. Dans ce cas, le message d'erreur est légèrement trompeur:package 'foobarbaz' is not available (for R version x.y.z)

Le problème n'était pas la version de R, c'était le reposparamètre. J'ai fait install.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL)ce qui a fonctionné pour moi à cette occasion.

J'espère que cela aide quelqu'un.

Damjan
la source
1
Lorsque j'essaie install.packages ('foobarbaz', repos = NULL) j'obtiens l'erreur "Erreur dans install.packages (" pair ", repos = NULL): le type ==" both "ne peut pas être utilisé avec 'repos = NULL'"
Ajay B
1
Merci pour le commentaire - je pense que j'ai oublié d'écrire le type="source"paramètre puisque j'ai mentionné que j'ai installé ce paquet à partir du code source, je vais éditer la réponse.
Damjan
3

J'ai eu le même problème (sous Linux) qui pourrait être résolu en modifiant les paramètres du proxy. Si vous êtes derrière un serveur proxy, vérifiez la configuration à l'aide Sys.getenv("http_proxy")de R. Dans mon, ~/.Renvironj'avais les lignes suivantes (depuis https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use -un-HTTP-ou-HTTPS-Proxy ) à l'origine du problème:

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

Le changer en

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

résolu le problème. Vous pouvez faire de même pour https.

Ce n'était pas la première pensée quand j'ai lu "le package xxx n'est pas disponible pour r version-xyz" ...

HTH

nachti
la source
2

Une autre raison + solution

Je rencontre cette erreur («le package XXX n'est pas disponible pour la version R XXX») lorsque j'essaie d'installer pkgdown dans mon RStudio sur le HPC de mon entreprise.

Il s'avère que l'instantané CRAN qu'ils ont sur le HPC date de janvier 2018 (près de 2 ans) et en effet pkgdown n'existait pas à l'époque. Cela était destiné à contrôler la source des packages pour les utilisateurs profanes, mais en tant que développeur, vous pouvez dans la plupart des cas changer cela en:

## 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()

Si vous savez ce que vous faites et que vous avez besoin de plusieurs packages qui pourraient ne pas être disponibles dans le CRAN de votre système, vous pouvez le configurer dans votre projet .Rprofile.

S'il s'agit d'un seul paquet, utilisez-le peut-être install.packages("package name", repos = "a newer CRAN than your company's archaic CRAN snapshot").

SibyllWang
la source
2
  1. Visitez https://cran.r-project.org/src/contrib/Archive/ .
  2. Trouvez le package que vous souhaitez installer avec Ctrl+F
  3. Cliquez sur le nom du package
  4. Déterminez la version que vous souhaitez installer
  5. Ouvrez RStudio
  6. Tapez " install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")"

Dans certains cas, vous devez installer plusieurs packages à l'avance pour utiliser le package que vous souhaitez utiliser.

Par exemple, je avais besoin d'installer 7 paquets ( Sejong, hash, rJava, tau, RSQLite, devtools, stringr) pour installer KoNLPpackage.

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)
Aspyn Lim
la source
1

Cela fonctionne presque toujours pour moi lorsque j'utilise un bioconducteur comme source et que j'invoque ensuite biocLite. Exemple:

source("https://bioconductor.org/biocLite.R")
biocLite("preprocessCore")
BioProgram
la source
1
C'est uniquement pour les boîtiers bioconducteurs, et c'est aussi la façon dont les boîtiers bioconducteurs doivent être installés.
Joris Meys
@JorisMeys Il me semble que tous les packages que j'ai essayé d'installer jusqu'à présent étaient disponibles via cette méthode, mais j'utilise principalement R pour la bioinformatique.
bli
1
@JorisMeys Je ne sais pas comment, mais biocLiteest capable de récupérer de manière transparente ces packages sur cran et de les installer. Je viens de tester dplyr(sur Xubuntu 16.04, si cela compte). Espérant éviter le plus possible les dégâts, j'essaie maintenant d'installer tous les packages "de la même manière" (actuellement en cours d'utilisation biocLite).
bli
2
@bli vous avez raison, je me corrige. Le code dans biocLitereconnaît le référentiel correct pour le package, puis appelle install.packages()pour effectuer l'installation proprement dite. Mais cela ne fonctionne pas parce que vous utilisez biocLite. Cela fonctionne parce qu'il install.packages()fait ce qu'il est censé faire. Il n'y a pas de différence entre l'utilisation biocLite()et install.packages()autre que la surcharge et le fait que, biocLite()par défaut, met également à jour tous les autres packages qu'il juge nécessaires. Je conseillerais donc toujours d'utiliserinstall.packages() des boîtiers non bioconducteurs.
Joris Meys
2
@bli il ne garantit pas la compatibilité, il met à jour tout à la dernière version (sauf si vous le mettez suppressUpdates = TRUE). C'est la même chose que d'appeler update.packages()et ensuite install.packages(). Parce que c'est littéralement ce qui se biocLitepasse sous le capot.
Joris Meys
0

Un autre ajout mineur, en essayant de tester une ancienne version R en utilisant l'image docker rocker/r-ver:3.1.0

  1. Le reposparamètre par défaut est MRANet cela n'obtient pas de nombreux packages.
  2. Cette version de R n'a pas https , donc, par exemple: install.packages("knitr", repos = "https://cran.rstudio.com")semble fonctionner.
Jack Wasey
la source
0

J'ai trouvé une légère variation sur le package n ° 6 obsolète l'excellente solution de @Richie Cotton.

Parfois, le responsable du package peut afficher des lacunes de version R qu'il ne prend pas en charge. Dans ce cas, vous avez au moins deux options: 1) mettre à niveau votre version R vers la suivante que le package cible prend déjà en charge, 2) installer la version la plus récente à partir des plus anciennes disponibles qui fonctionneraient avec votre version R.

Un exemple concret: la dernière version du package CRAN rattle pour l'exploration de données, 5.3.0, ne prend pas en charge la version R 3.4 car elle comportait une mise à jour importante entre les versions 5.2.0 du package (R> = 2.13.0) et 5.3.0 (R > = 3,5).

Dans un cas comme celui-ci, l'alternative à la mise à niveau de l'installation R est la solution déjà mentionnée. Installez le package devtoolssi vous ne l'avez pas (il inclut le package remotes), puis installez la version spécifique qui fonctionnera dans votre R. actuel. Vous pouvez rechercher ces informations sur la page CRAN pour les archives de package spécifiques.

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

Dans mon cas, la solution était de simplement mettre à niveau R.

Ferus
la source
-1

Comme mentionné ici (en français), cela peut se produire lorsque deux versions de R sont installées sur votre ordinateur. Désinstallez la plus ancienne, puis réessayez l'installation de votre package! Cela a bien fonctionné pour moi.

Clément F
la source