knitr文档中的install.packages失败:"试图在不设置镜像的情况下使用CRAN"

Loc*_*ith 39 r knitr

使用下面的代码我得到了我想要的数据,但由于某种原因我无法弄清楚knitr是不是让我编译PDF文档,如下所示:

我的代码:

install.packages("weatherData")
library(weatherData)
istanbul <- getWeatherForDate("Istanbul",
                              start_date = Sys.Date() - 41, 
                              end_date = Sys.Date())
Run Code Online (Sandbox Code Playgroud)

没有问题,但我得到以下消息尝试编译PDF:

Quitting from lines 3-31 (ist_weather.spin.Rmd) 
Error in contrib.url(repos, type) : 
  trying to use CRAN without setting a mirror
Calls: <Anonymous> ... eval -> eval -> install.packages -> grep -> contrib.url
Execution halted
Run Code Online (Sandbox Code Playgroud)

sco*_*coa 63

除非你特别要求,否则Knitr会产生一个R会话,没有默认的镜像.我们倾向于忘记在使用Rstudio时我们需要为每个R会话设置CRAN,因为它会处理它,但仅用于交互式使用,而不是针对knitr.

您可以尝试将镜像指定为install.packages参数:

install.packages("weatherData",repos = "http://cran.us.r-project.org")
Run Code Online (Sandbox Code Playgroud)

或者,您可以在您的设置中设置默认的CRAN镜像.Rprofile.看到这个答案.

也就是说,通过编译器文档安装软件包并不是一个好主意,你可能会多次编译.如果需要,您应该让人们知道如何安装缺少的软件包,或者至少在再次安装软件包之前测试软件包是否已安装

if(!require(weatherData)) install.packages("weatherData",repos = "http://cran.us.r-project.org")
Run Code Online (Sandbox Code Playgroud)

  • 我实际上是指R会话,而不是环境.对不起.这只是我们在使用Rstudio时会忘记的默认R行为,因为它会处理它. (3认同)
  • 有意思 - 你能解释一下*为什么*新环境中没有默认的CRAN镜像? (2认同)
  • 不用担心,我并没有对“环境”与“会话”感到困惑(从上下文中可以清楚地看出这一点)。但是,我不知道 RStudio 参与设置此类选项。谢谢你的澄清。 (2认同)
  • 5 分钟前我刚刚开始第一次使用 R,我要做的第一件事就是 *Google 一条晦涩的错误消息,以便我可以配置包下载镜像?* 他们在抽烟吗? (2认同)

Ram*_* Ar 5

您必须在R中设置CRAN存储库。为此,请启动R或RStudio。在R终端中运行以下代码。

r = getOption("repos")
r["CRAN"] = "http://cran.us.r-project.org"
options(repos = r)
install.packages("weatherData")
Run Code Online (Sandbox Code Playgroud)

上面的代码在R中定义了CRAN存储库,在下一个软件包安装中,无需再次定义。

另一种方法是简单地运行install.packages("weatherData", repos="http://cran.us.r-project.org")。但是,在第二种解决方案中,未设置存储库,因此您必须在每次安装软件包时将其作为参数传递。