2013-05-07 19 views
17

Vorrei installare un pacchetto direttamente da un URL per l'origine del pacchetto. Voglio farlo per rendere più facile per le persone testare una versione preliminare del pacchetto che non dovrebbe essere ampiamente (o permanentemente) disponibile. This è una domanda simile ma è diversa perché descrive solo come installare da file locali non URL generici.Installare un pacchetto R direttamente da un URL per l'origine del pacchetto

Per il piacere di questa domanda, utilizzerò un collegamento all'origine del pacchetto boot. Leggendo ?install.packages particolare la descrizione dell'argomento pkgs suggerisce:

install.packages(
    "http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz", 
    repos = NULL, type = "source" 
) 

Tuttavia questo non funziona con:

Warning in install.packages : 
    installation of package 
    ‘http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz’ 
    had non-zero exit status 

suggerendo che l'URL viene interpretato come il nome del pacchetto, non la sua posizione. Possiamo ovviare a questo con la seguente procedura in due fasi:

download.file(
    "http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz", 
    "boot" 
) 
install.packages("boot", repos = NULL, type = "source") 

ma preferirei farlo con una singola chiamata a solo install.packages; e dal momento che install.packages è in grado di scaricare i file comunque, penso che questo dovrebbe essere possibile.

+0

Il pacchetto non è stato trovato nella chiamata originale perché non è lì. È 'boot_1.3-9.tar.gz' in quella directory. –

+0

@ SimonO101 mi dispiace che sia stato un errore che ho fatto nello scrivere la domanda. Ripararlo non cambia il comportamento purtroppo. – orizon

+1

Perché non impostare la directory in cui si memorizza il pacchetto sorgente come repository? [Ecco un esempio] (http://stackoverflow.com/questions/2905650/creating-a-local-r-package-repository), anche se probabilmente vorrai sostituire 'type =" source "' per 'type = "win.binary" ' –

risposta

16

install.packages ora funziona con URL http (non ancora https) a partire da 3.1.1. Questo funziona per me:

install.packages("http://www.lepem.ufc.br/jaa/colorout_1.1-0.tar.gz", repos=NULL) 

Edit: Come di R 3.2.0, https è BUILTIN via libcurl. Questo dovrebbe funzionare ora:

install.packages("https://github.com/hadley/devtools/archive/v1.7.0.tar.gz", 
       repos=NULL, method="libcurl") 

Edit: Come di R 3.2.2, https dovrebbe lavorare con le opzioni predefinite assumendo che il supporto libcurl è stato compilato in

Modifica 2016-04-20:. Ci possono essere alcuni problemi scaricare pacchetti ospitati su S3, ma il method='wget' sembra funzionare per quelli per ora.

+0

Questo metodo non è riuscito con un errore "403 Forbidden" quando si installa.packages() 'ha provato a scaricare il file usando' download.file() '. Non sono sicuro se il supporto di libcurl sia stato compilato ma 'devtools :: install_url()' suggerito da @G. Grothendieck funziona senza problemi. –

+0

Sembra un problema di autenticazione. Quale URL stai cercando di scaricare? –

+0

Sì, sembra che sia per un URL diverso (forse dove il file è effettivamente ospitato). Confronta 'install.packages (" https://bitbucket.org/kleinstein/logminer/downloads/pclogit_0.2.tar.gz ")' a 'devtools :: install.packages (" https://bitbucket.org/kleinstein /logminer/downloads/pclogit_0.2.tar.gz ")' –

2

Perché non impostare la directory in cui si memorizza il pacchetto sorgente come repository?

Here is an example (anche se è probabile che si desideri sostituire type="source" per type="win.binary" nel codice a tale collegamento).

+0

Questo risolve il mio problema. Speravo che '' install.packages'' fosse in grado di scaricare e installare pacchetti al di fuori di un repository ma leggendo attentamente la documentazione penso che questo non sia possibile, quindi ho accettato la risposta. – orizon

9

Vedere ?install_url nel pacchetto devtools.

+0

Grazie. Questo risolve il mio problema direttamente. – orizon

Problemi correlati