在命令行上运行r代码时出现包错误

时间:2013-07-17 16:19:01

标签: r rstudio

我有一些我运行的代码包括这部分:

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

1 个答案:

答案 0 :(得分:53)

当您从RStudio中调用install.packages时,RStudio会设置默认存储库。当您通过命令行运行脚本时,您必须告诉R使用哪个存储库(或设置全局默认存储库)。

您可以通过告诉R使用您喜欢的存储库来轻松解决此问题。

例如,如果您想使用RStudio的软件包存储库,请在repos="http://cran.rstudio.com/"调用中设置install.packages

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

这应该有效!