web-dev-qa-db-ja.com

knitr文書でinstall.packagesが失敗する:「ミラーを設定せずにCRANを使用しようとする」

次のコードを使用して、必要なデータを取得しましたが、何らかの理由でknitrがPDFドキュメントをコンパイルできません。

私のコード:

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

問題なく動作しますが、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
38
Locksmith

Knitrは、特に指定しない限り、デフォルトのクランミラーなしでRセッションを生成します。 Rstudioを使用するときは、RセッションごとにCRANを設定する必要があることを忘れがちです。これは、knitrではなくインタラクティブな使用のみを行うためです。

install.packages引数としてミラーを指定してみてください:

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

または、.RprofileにデフォルトのCRANミラーを設定できます。 この回答 を参照してください。

ただし、複数回コンパイルする可能性のあるknitrドキュメントを介してパッケージをインストールするのは得策ではありません。必要に応じて不足しているパッケージをインストールする方法を人々が知っていると仮定するか、少なくともパッケージを再インストールする前にインストールされているかどうかをテストする必要があります

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

RでCRANリポジトリを設定する必要があります。設定するには、RまたはRStudioを起動します。 Rターミナルで次のコードを実行します。

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

上記のコードは、RでCRANリポジトリを定義し、次回のパッケージインストールでは、再度定義する必要はありません。

別の方法は、単にinstall.packages("weatherData", repos="http://cran.us.r-project.org")を実行することです。ただし、2番目のソリューションでは、リポジトリは設定されず、すべてのパッケージインストールでパラメーターとして渡す必要があります。

5
Ramin Ar