Come devo gestire l'avviso "pacchetto 'xxx" non disponibile (per la versione R xyz) "?


561

9
Si noti che quando si utilizza RStudio, viene visualizzato questo avviso anche durante l'installazione da un repository diverso da CRAN. È un bug che ho segnalato già alcune volte, ma non so se sia già stato risolto.
Joris Meys,

Risposte:


563

1. Non puoi scrivere

La prima cosa da testare è aver digitato correttamente il nome del pacchetto? I nomi dei pacchetti fanno distinzione tra maiuscole e minuscole in R.


2. Non hai cercato nel repository giusto

Successivamente, è necessario verificare se il pacchetto è disponibile. genere

setRepositories()

Vedi anche ? SetRepositories .

Per vedere quali repository R cercherà il tuo pacchetto e, facoltativamente, selezionarne altri. Per lo meno, di solito vorrai CRANessere selezionato, e CRAN (extras)se usi Windows e i Bioc*repository se lo fai[Gen / prote / metabol / trascrizione] omiche analisi biologiche.

Per modificarlo in modo permanente, aggiungi una riga simile setRepositories(ind = c(1:6, 8))al tuo Rprofile.sitefile.


3. Il pacchetto non si trova nei repository selezionati

Restituisci tutti i pacchetti disponibili usando

ap <- available.packages()

Vedi anche i nomi dei pacchetti disponibili di R , ? Available.packages .

Poiché questa è una matrice di grandi dimensioni, potresti voler utilizzare il visualizzatore di dati per esaminarlo. In alternativa, puoi verificare rapidamente se il pacchetto è disponibile testando i nomi delle righe.

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

In alternativa, l'elenco dei pacchetti disponibili può essere visualizzato in un browser per CRAN , CRAN (extra) , Bioconduttore , R-forge , RForge e github .

Un altro possibile messaggio di avviso che potresti ricevere quando interagisci con i mirror CRAN è:

Warning: unable to access index for repository

Ciò può indicare che il repository CRAN selezionato non è attualmente disponibile. È possibile selezionare un altro mirror con chooseCRANmirror()e riprovare l'installazione.


Esistono diversi motivi per cui un pacchetto potrebbe non essere disponibile.


4. Non vuoi un pacchetto

Forse non vuoi davvero un pacchetto. È comune essere confusi sulla differenza tra un pacchetto e una libreria o un pacchetto e un set di dati.

Un pacchetto è una raccolta standardizzata di materiale che estende R, ad esempio fornendo codice, dati o documentazione. Una libreria è un luogo (directory) in cui R sa trovare i pacchetti che può usare

Per visualizzare i set di dati disponibili, digitare

data()

5. R o Bioconductor non sono aggiornati

Potrebbe dipendere da una versione più recente di R (o da uno dei pacchetti che importa / dipende da). Guarda a

ap["foobarbaz", "Depends"]

e considera l'aggiornamento della tua installazione R alla versione corrente. Su Windows, ciò è più semplice tramite il installrpacchetto.

library(installr)
updateR()

(Certo, potrebbe essere necessario install.packages("installr")prima.)

Equivalentemente per i pacchetti Bioconductor, potrebbe essere necessario aggiornare l'installazione di Bioconductor.

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

6. Il pacchetto non è aggiornato

Potrebbe essere stato archiviato (se non viene più mantenuto e non supera più i R CMD checktest).

In questo caso, è possibile caricare una versione precedente del pacchetto utilizzando install_version()

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

Un'alternativa è installare dal mirror CRAN di github.

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

7. Non esiste un file binario Windows / OS X / Linux

Potrebbe non avere un file binario di Windows a causa della necessità di software aggiuntivo che CRAN non ha. Inoltre, alcuni pacchetti sono disponibili solo tramite i sorgenti per alcune o tutte le piattaforme. In questo caso, potrebbe esserci una versione nel CRAN (extras)repository (vedi setRepositoriessopra).

Se il pacchetto richiede il codice di compilazione (ad esempio C, C ++, FORTRAN), quindi su Windows installa Rtools o su OS X installa gli strumenti di sviluppo che accompagnano XCode e installa la versione di origine del pacchetto tramite:

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

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

Su CRAN, puoi sapere se avrai bisogno di strumenti speciali per compilare il pacchetto dal sorgente guardando il NeedsCompilation bandiera nella descrizione.


8. Il pacchetto è su github / Bitbucket / Gitorious

Potrebbe avere un repository su Github / Bitbucket / Gitorious. Questi pacchetti richiedono l' remotesinstallazione del pacchetto.

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

(Come per installr, potrebbe essere necessario install.packages("remotes")prima.)


9. Non esiste una versione di origine del pacchetto

Sebbene la versione binaria del pacchetto sia disponibile, la versione di origine non lo è. È possibile disattivare questo controllo impostando

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

come descritto in questa risposta SO da imanuelc e la sezione Dettagli di ?install.packages.


10. Il pacchetto si trova in un repository non standard

Il pacchetto si trova in un repository non standard (ad es Rbbg.). Supponendo che sia ragionevolmente conforme agli standard CRAN, è comunque possibile scaricarlo utilizzando install.packages; devi solo specificare l'URL del repository.

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

RHIPEd'altra parte non è in un repository simile a CRAN e ha le sue istruzioni di installazione .


2
@KonradRudolph Viewfunziona anche in R GUI, Architect, Revo-R e Live-R. Non ho provato in emacs / ESS.
Richie Cotton,

Ah, mio ​​cattivo. Pensavo di aver verificato e scoperto che la funzione non esisteva. Ovviamente (ma non funziona per me su OS X ... ).
Konrad Rudolph,

9
Penso che valga la pena ricordare che installrfunziona solo su Windows
David Arenburg,

2
"È comune essere confusi sulla differenza tra un pacchetto e una libreria" - beh, duh: gli sviluppatori R stessi sono confusi a riguardo. In quale altro modo spiegare la funzione library? Tuttavia, in tale ottica, questa risposta non dovrebbe menzionare / spiegare .libPaths? I percorsi di libreria non impostati o non scrivibili sembrano essere uno dei problemi più comuni durante l'installazione dei pacchetti.
Konrad Rudolph,

1
Suggerirei di includere un altro punto: provare a installare i pacchetti che si trovano all'interno di r-core, come in questa domanda , in cui tenta di installare il parallelpacchetto, quando è già in r-core
Sergio Fernández,

90

Nell'ultima R (3.2.3) è presente un bug, che a volte impedisce di trovare il pacchetto corretto. La soluzione alternativa è impostare manualmente il repository:

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

Soluzione trovata in un'altra domanda


4
Sospettavo che fosse così. Sembra tuttavia essere un bug in r-studio. Ho appena testato e non ho bisogno di impostare il repository se lancio R dal terminale - solo dall'interno di r-studio.
Adempewolff,

E 3.5.1 pure. Prima di impostare dependenciese repos, R non era in grado di connettersi https://mirrors.sorengard.com/cran/src/contrib/PACKAGES(e quindi la risoluzione dei problemi in altre domande non funzionava). Dopo, ho potuto accedere a quel sito anche se i pacchetti non vengono ancora caricati in modo semplice.
user3386170

Anche sul mio altro computer che ha la versione 3.5.0.
user3386170

Sto provando a caricare blotter e quantstrat nella versione 3.6.0 e ho usato questo codice, ma invano: "Avviso in install.packages: il pacchetto 'quantstrat' non è disponibile (per R versione 3.6.0)". Altri suggerimenti?
W Barker,

Aveva lo stesso problema con e1071e R 3.6.1 su macOS High Sierra. Grazie per l'aiuto
Igor F.

25

Sembra esserci un problema con alcune versioni di Re libcurl. Ho avuto lo stesso problema su Mac (R version 3.2.2)e Ubuntu (R version 3.0.2)e in entrambi i casi è stato risolto semplicemente eseguendo questo prima che il install.packagescomando di

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

La soluzione è stata suggerita da un amico, tuttavia, non sono stato in grado di trovarlo in nessuno dei forum, quindi sottoponendo questa risposta ad altri.


2
per la mia installazione, avendo curlinstallato apt in Ubuntu e la vecchia R 2.15.0, install.packages(..., method="curl")il problema è stato
risolto

Ho dovuto fare method="curl"piuttosto che wget, ma ha risolto il problema
Jeff,

install_versionin devtoolsmi ha aiutato a ottenere intorno a questo. Anche al mio Mac non piaceva wget. (Avevo R 3.2.3 lamentarsi di non essere in grado di trovare un pacchetto di archivio utilizzando http://. Altri pacchetti stavano installando bene)
D. Woods

Questo ha funzionato per me con un'installazione di R 3.2.2 su Ubuntu Linux a 64 bit
Darren Wilkinson,

22

Questa soluzione potrebbe interrompere R ma qui è una soluzione più semplice che funziona il 99% delle volte.

Devi solo fare:

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

Come menzionato dall'autore qui


2
e quell'1 % sono io: / install.packages ('graph', repos = ' cran.us.r-project.org' )
Sahil Nagpal

Ho provato a installare il pacchetto stringrusando questo comando ma non è riuscito per me. 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

sembra che faccia parte anche dell'1%, non ha funzionato per me
NetEmmanuel il

15

11. R (o un'altra dipendenza) non è aggiornato e non si desidera aggiornarlo.

Attenzione, questa non è esattamente la migliore pratica.

  • Scarica la fonte del pacchetto.
  • Passare al DESCRIPTIONfile.
  • Rimuovi la linea offensiva con il tuo editor di testo, ad es

    Depends: R (>= 3.1.1)
  • Installa da locale (cioè dalla directory principale di DESCRIPTION) ad es

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

7
Di solito la dipendenza dichiarata dalla versione R è lì per un motivo, potrebbe essere saggio verificare quale potenziale modifica si interromperà.
jangorecki,

1
@dardisco Non ho rimosso la dipendenza, ma grazie al tuo commento ho trovato le dipendenze e vedo che ho solo bisogno di aggiornare R. Grazie
sa_zy

9

Una cosa che è successa per me è che la versione di R fornita dalla mia distribuzione Linux (R versione 3.0.2 fornita da Ubuntu 14.04) era troppo vecchia per l'ultima versione del pacchetto disponibile su CRAN (nel mio caso, la plyrversione 1.8.3 come oggi). La soluzione è stata quella di utilizzare il sistema di packaging della mia distribuzione invece di provare a installarlo da R ( apt-get install r-cran-plyrho ottenuto la versione 1.8.1 di plyr). Forse avrei potuto provare ad aggiornare R usando updateR(), ma temo che ciò interferirebbe con il gestore dei pacchetti della mia distribuzione.


Per problemi con Ubuntu, controlla il README: cran.r-project.org/bin/linux/ubuntu/README
Joris Meys,

Questa soluzione ha funzionato per me per debian per il pacchetto da mvtnormcui ksdipende. Il comando fuapt-get install r-cran-mvtnorm
Justapigeon,

8

Questo mi ha fatto risparmiare un sacco di tempo nel debug di cosa non va. In molti casi i mirror non sono aggiornati. Questa funzione può installare più pacchetti con le loro dipendenze usando 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"))

6

Questo è quello che finalmente ho potuto fare per installare il pacchetto psichico in R-3.4.1 quando ho ricevuto lo stesso avvertimento

1: cercato su Google per quel pacchetto.

2: scaricato manualmente con estensione tar.gz

3: Scegliere l'opzione "File archivio pacchetti (.zip; .tar.gz)" per i pacchetti di installazione in R

4: navigato localmente nel luogo in cui è stato scaricato e fatto clic su Installa

Potresti ricevere un avviso: le dipendenze 'xyz' non sono disponibili per il pacchetto, quindi prima installa quelle dal repository e quindi esegui i passaggi 3-4.


4

Ho fissato questo errore su Ubuntu seguendo scrupolosamente le istruzioni per l'installazione R . Questo includeva:

  1. aggiungendo deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ al mio file /etc/apt/sources.list
  2. In esecuzione sudo apt-get update
  3. In esecuzione sudo apt-get install r-base-dev

Per il passaggio 1 puoi scegliere qualsiasi mirror di download CRAN al posto della mia Università di Toronto, se lo desideri.


In questo modo ho risolto il mio problema, ma aggiorno ancora la mia R alla versione più recente (da 3.02a 3.4). Se vuoi aggiornare la tua R, questo è un bel modo.
Belter,

4

Ho fatto l'errore di dimenticare di mettere repos=NULLdurante l'installazione del pacchetto R dal codice sorgente. In questo caso il messaggio di errore è leggermente fuorviante:package 'foobarbaz' is not available (for R version x.y.z)

Il problema non era la versione di R, era il reposparametro. L'ho fattoinstall.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL) che ha funzionato per me in questa occasione.

Spero che questo aiuti qualcuno.


1
Quando provo install.packages ('foobarbaz', repos = NULL) ricevo l'errore "Errore in install.packages (" coppia ", repos = NULL): type ==" both "non può essere usato con 'repos = NULL'"
Ajay B,

1
Grazie per il commento - Penso di aver dimenticato di scrivere il type="source"parametro da quando ho menzionato che ho installato questo pacchetto dal codice sorgente, modificherò la risposta.
Damjan,

3

Ho avuto lo stesso problema (su Linux) che poteva essere risolto modificando le impostazioni del proxy. Se sei dietro un server proxy controlla la configurazione usando Sys.getenv("http_proxy")all'interno di R. In my ~/.Renvironavevo le seguenti righe (da https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use -an-HTTP-or-HTTPS-Proxy ) che causa il problema:

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

Modificandolo in

http_proxy="http://user:passwd@proxy.dom.com:port"

problema risolto. Puoi fare lo stesso perhttps .

Non è stato il primo pensiero quando ho letto "il pacchetto xxx non è disponibile per la versione r-xyz" ...

HTH


2

Un'altra ragione + soluzione

Ho riscontrato questo errore ("il pacchetto XXX non è disponibile per la versione R XXX") durante il tentativo di installare pkgdown nel mio RStudio sull'HPC della mia azienda.

Si scopre che l'istantanea CRAN che hanno sull'HPC è del gennaio 2018 (quasi 2 anni) e in effetti pkgdown non esisteva allora. Ciò era pensato per controllare la fonte dei pacchetti per gli utenti non addetti ai lavori, ma come sviluppatore, nella maggior parte dei casi è possibile modificarlo cambiando:

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

Se sai cosa stai facendo e potresti aver bisogno di più di un pacchetto che potrebbe non essere disponibile nel CRAN del tuo sistema, puoi configurarlo nel tuo progetto .Rprofile.

Se è solo un pacchetto, forse basta usare install.packages("package name", repos = "a newer CRAN than your company's archaic CRAN snapshot").


2
  1. Visita https://cran.r-project.org/src/contrib/Archive/ .
  2. Trova il pacchetto che desideri installare con Ctrl+F
  3. Fai clic sul nome del pacchetto
  4. Determina quale versione vuoi installare
  5. Apri RStudio
  6. Digita " install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")"

In alcuni casi, è necessario installare diversi pacchetti in anticipo per utilizzare il pacchetto che si desidera utilizzare.

Ad esempio, avevo bisogno di installare 7 pacchetti ( Sejong, hash, rJava, tau, RSQLite, devtools, stringr) per installare KoNLPil pacchetto.

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)

1

Funziona quasi sempre per me quando uso il bioconduttore come fonte e quindi invoco biocLite. Esempio:

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

1
Questo è solo per i pacchetti di bioconduttori e questo è anche il modo in cui i pacchetti di bioconduttori devono essere installati.
Joris Meys,

@JorisMeys Mi sembra che tutti i pacchetti che ho provato ad installare finora fossero disponibili con questo metodo, ma sto usando principalmente R per la bioinformatica.
bli

1
@JorisMeys Non so come, ma biocLiteè in grado di recuperare in modo trasparente questi pacchetti su cran e installarli. Ho appena provato per dplyr(su Xubuntu 16.04, se è importante). Sperando di evitare il disordine il più possibile, ora provo a installare tutti i pacchetti "allo stesso modo" (attualmente in uso biocLite).
bli

2
@bli hai ragione, mi correggo. Il codice in biocLitericonosce i repository corretti per il pacchetto e quindi chiama install.packages()per eseguire l'installazione effettiva. Ma non funziona perché usi biocLite. Funziona perché install.packages()fa quello che dovrebbe fare. Non vi è alcuna differenza tra l'utilizzo biocLite()e install.packages()diverso dall'overhead e il fatto che biocLite()per impostazione predefinita aggiorna anche tutti gli altri pacchetti che ritiene necessari. Quindi consiglierei comunque di utilizzare install.packages()per i pacchetti non bioconduttori.
Joris Meys,

2
@bli non garantisce la compatibilità, aggiorna tutto all'ultima versione (a meno che non lo metti suppressUpdates = TRUE). Questo è lo stesso di chiamare update.packages()e quindi install.packages(). Perché è letteralmente ciò che biocLitefa sotto il cofano.
Joris Meys,

0

Un'altra aggiunta minore, durante il tentativo di testare una vecchia versione R utilizzando l'immagine docker rocker/r-ver:3.1.0

  1. L' reposimpostazione predefinita è MRANe questo non riesce a ottenere molti pacchetti.
  2. Quella versione di R non ha https, quindi, per esempio: install.packages("knitr", repos = "https://cran.rstudio.com")sembra funzionare.

0

Ho trovato una leggera variazione sul pacchetto n. 6 non è aggiornato rispetto all'eccellente soluzione di @Richie Cotton.

A volte il manutentore del pacchetto può mostrare lacune nella versione R che non supporta. In tal caso, hai almeno due opzioni: 1) aggiorna la tua versione R alla successiva che il pacchetto di destinazione supporta già, 2) installa la versione più recente tra quelle precedenti che funzionerebbero con la tua versione R.

Un esempio concreto: l'ultima versione del pacchetto CRAN rattleper il data mining, 5.3.0, non supporta R versione 3.4 perché aveva un grande aggiornamento tra le versioni del pacchetto 5.2.0 (R> = 2.13.0) e 5.3.0 (R > = 3.5).

In un caso come questo, l'alternativa all'aggiornamento dell'installazione R è la soluzione già menzionata. Installa il pacchetto devtoolsse non lo hai (include il pacchetto remotes) e quindi installa la versione specifica che funzionerà nel tuo attuale R. Puoi cercare tali informazioni nella pagina CRAN per gli archivi del pacchetto specifico.

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

0

Nel mio caso la soluzione era semplicemente aggiornare R.


-1

Come accennato qui (in francese), ciò può accadere quando sul computer sono installate due versioni di R. Disinstallare quello più vecchio, quindi riprovare a installare il pacchetto! Ha funzionato bene per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.