2013-07-17 8 views
34

mam jakiś kod, który mogę uruchomić tę część, która obejmuje:Pakiet błąd podczas uruchamiania kodu R w linii komend

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

Kiedy uruchomić w nim rstudio, wszystko działa płynnie i nie ma żadnych błędów. Jednak przy próbie mój kod działa w wierszu polecenia, otrzymuję ten błąd:

$ 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

Przeczytaj to: 'próba użycia CRAN bez ustawiania kopii lustrzanej', a zwłaszcza' repos' w 'install.packages'. –

Odpowiedz

51

RStudio ustawia domyślnego repozytorium podczas rozmowy install.packages od wewnątrz RStudio. Po uruchomieniu skryptu za pomocą wiersza poleceń musisz powiedzieć R, którego repozytorium ma użyć (lub ustawić globalne repozytorium domyślne).

Możesz łatwo rozwiązać ten problem, mówiąc do R, aby użyć swojego ulubionego repozytorium.

Na przykład, jeśli chcesz korzystać z repozytorium pakietów RStudio, ustaw repos="http://cran.rstudio.com/" w rozmowie install.packages.

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

To powinno zadziałać!

+0

To powoduje błąd: Ładowanie wymaganego pakietu: yaml Błąd w pliku (con, "r"): nie można otworzyć połączenia Wykonanie zatrzymano – kng

+0

Czy wiesz, czy pakiet został zainstalowany czy nie? Czy masz inny kod w swoim skrypcie? Czy próbowałeś zrobić skrypt testowy, powiedz 'test.R' tylko wiersz' library ("yaml") ', aby sprawdzić, czy pakiet jest ładowany poprawnie? – ialm

+0

Z jakiegoś powodu myślałem, że błąd był związany z tym samym problemem. Okazuje się, że wcześniej użyłem opakowania typu "suppress warning", które ukrywało prawdziwy problem. – kng