我有一些我运行的代码包括这部分:
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
答案 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")
}
这应该有效!