2013-07-17 140 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