36

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

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
4

1 回答 1

54

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

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

例如,如果要使用 RStudio 的包存储库,请在调用repos="http://cran.rstudio.com/"内部进行设置。install.packages

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

这应该工作!

于 2013-07-17T16:46:52.640 回答