install.packages mislukt in knitr-document: “probeert CRAN te gebruiken zonder een spiegel in te stellen”

Met behulp van de volgende code kreeg ik de gegevens die ik wilde, maar om de een of andere reden kan ik er niet achter komen dat knitrme geen PDF-document laat compileren, zoals hieronder wordt getoond:

Mijn code:

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

Werkt zonder problemen, maar ik krijg de volgende melding wanneer ik de PDF probeer te compileren:

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

Antwoord 1, autoriteit 100%

Knitr produceert een R-sessie, zonder een standaard cran-spiegel tenzij je er specifiek om hebt gevraagd. We vergeten vaak dat we CRAN moeten instellen voor elke R-sessie wanneer we Rstudio gebruiken omdat het ervoor zorgt, maar alleen voor interactief gebruik, niet voor knitr.

Je zou kunnen proberen een spiegelserver op te geven als een install.packages-argument:

install.packages("weatherData",repos = "http://cran.us.r-project.org")

U kunt ook uw standaard CRAN-mirror instellen in uw .Rprofile. Zie dit antwoord.

Dat gezegd hebbende, het is geen goed idee om pakketten te installeren via een knitr-document dat u waarschijnlijk meerdere keren zult compileren. Je moet ervan uitgaan dat mensen weten hoe ze een ontbrekend pakket moeten installeren, of in ieder geval testen of het pakket is geïnstalleerd voordat ze het opnieuw installeren

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

Antwoord 2, autoriteit 18%

U moet de CRAN-repository in uw R instellen. Start hiervoor R of RStudio. voer in de R-terminal de volgende codes uit.

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

Bovenstaande code definieert CRAN-repository in de R en in de volgende pakketinstallatie hoeft u deze niet opnieuw te definiëren.

Een alternatieve manier is om eenvoudig install.packages("weatherData", repos="http://cran.us.r-project.org")uit te voeren. Bij de tweede oplossing is de repository echter niet ingesteld en moet u deze bij elke pakketinstallatie als parameter doorgeven.


Antwoord 3

Eerlijk gezegd,

Het zou niet werken voor mij omdat ik pakketten had geïnstalleerd en deze regels code de breifunctie onderbraken. Toen ik alle regels met installatiepakketten verwijderde (en de meest recente beschikbare R en R Markdown gebruikte), verdween deze fout.

Other episodes