2013-07-17 10 views
34

Ho un codice che ho eseguito che include questa parte:errore di pacchetto quando si esegue il codice r sulla linea di comando

if (!require("yaml")) { 
    install.packages("yaml") 
    library("yaml") 
} 

Quando eseguo in esso rstudio, tutto funziona senza problemi e non ci sono bug. Tuttavia, quando provo in esecuzione il mio codice sulla riga di comando, ottengo questo errore:

$ Rscript.exe file.R 
Loading required package: yaml 
Installing package(s) into ‘/usr/lib/R/site-library’ 
(as ‘lib’ is unspecified) 
Error in contrib.url(repos, type) : 
    trying to use CRAN without setting a mirror 
Calls: install.packages -> grep -> contrib.url 
In addition: Warning message: 
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : 
    there is no package called ‘yaml’ 
Execution halted 
+2

Leggi questo: 'prova ad usare CRAN senza impostare un mirror' e soprattutto l'argomento' repos' in 'install.packages'. –

risposta

51

RStudio imposta un repository di default quando si chiama install.packages dall'interno RStudio. Quando si esegue lo script tramite la riga di comando, è necessario indicare a R quale repository utilizzare (o impostare un repository predefinito globale).

È possibile risolvere facilmente questo problema dicendo a R di utilizzare il repository preferito.

Ad esempio, se si desidera utilizzare il repository di pacchetti RStudio, impostare repos="http://cran.rstudio.com/" all'interno della chiamata install.packages.

if (!require("yaml")) { 
    install.packages("yaml", repos="http://cran.rstudio.com/") 
    library("yaml") 
} 

Questo dovrebbe funzionare!

+0

Questo mi dà l'errore: Caricamento del pacchetto richiesto: yaml Errore nel file (con, "r"): impossibile aprire la connessione Esecuzione arrestata – kng

+0

Sapete se il pacchetto è stato installato o no? Hai un altro codice nel tuo script? Hai provato a fare uno script di test, ad esempio 'test.R' con solo la' libreria '(' yaml ') 'per vedere se il pacchetto viene caricato correttamente? – ialm

+0

Per qualche motivo ho pensato che l'errore fosse correlato allo stesso problema. Si scopre che in precedenza avevo usato un wrapper di avvisi di soppressione che nascondeva il vero problema. – kng

Problemi correlati