2013-07-17 181 views
34

R代碼裏面,當我有一些代碼,我運行,其中包括這一部分:包的錯誤運行在命令行

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

當我在它rstudio運行,一切都無縫地運行,並沒有錯誤。然而,當我嘗試在命令行中運行我的代碼,我得到這個錯誤:

$ 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

閱讀此處:'嘗試在'install.packages'中不使用鏡像'並且特別是'repos'參數來使用CRAN。 –

回答

51

RStudio設置一個默認存儲庫,當你從內RStudio調用install.packages。當您通過命令行運行腳本時,必須告訴R使用哪個存儲庫(或設置全局默認存儲庫)。

您可以通過告訴R使用您喜歡的存儲庫來輕鬆解決此問題。

例如,如果要使用RStudio的包存儲庫,請在install.packages調用中設置repos="http://cran.rstudio.com/"

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

這應該工作!

+0

這會給我錯誤: 正在加載所需軟件包:yaml 文件錯誤(con,「r」):無法打開連接 執行停止 – kng

+0

您是否知道軟件包是否已安裝?你的腳本中是否有其他代碼?你有沒有試過製作一個測試腳本,用''''''''''''''''''''''''''''''''''''來說'test.R'來查看軟件包是否正確加載? – ialm

+0

出於某種原因,我認爲錯誤與相同的問題有關。事實證明,我之前使用了一個隱藏真實問題的壓制警告包裝器。 – kng