16

SO に関する繰り返しの質問は、パッケージ xx が R バージョン 2.xx.xx で利用できないということです。たとえばgplotsパッケージをインストールするには、ユーザーが R 3.0 をインストールする必要があります。CRAN のアーカイブで古いバージョンを入手できますが、次の点に注意してください。

  • 特定の R バージョンに対して取得する必要があるパッケージのバージョンを確認するのは簡単ではありません。
  • ソースからパッケージをビルドする必要がありますが、これは主に Windows での (軽度の) 課題です。

私の質問は次のとおりです。古いバージョンの R に一致する古いパッケージ バージョンを取得するためのより効果的なワークフローはありますか? ubuntuのバージョンごとに異なるパッケージリポジトリを持つという精神で。

R の最新バージョンを入手することが 1 つの選択肢であることはわかっていますが、R の特定のバージョンに固執する差し迫った理由があるかもしれません。 R およびサポート パッケージ。または、システム管理によって制限されています。

4

1 に答える 1

4

これは完全にテストされていません (私は最新バージョンの R を実行していて、現時点では古いバージョンの R をインストールしてテストする時間がありません)、おそらく 1 つのアイデアは、「アーカイブ」ページから日付を取得することです。それを R バージョンの日付と比較し、最新バージョンから始めて、以前のバージョンを徐々にインストールしてみてください。

このようなものが出発点になるかもしれません:

install_archive <- function(PackageName) {
  if(!require("XML"))
      install.packages("XML")
  if(!require("devtools"))
      install.packages("devtools")
  rVersionDate <- as.Date(paste(R.Version()[c("year", "month", "day")],
                                collapse = "-"))
  BaseURL <- "http://cran.r-project.org/src/contrib/Archive/"
  u <- htmlParse(paste(BaseURL, PackageName, sep = ""))
  doc <- readHTMLTable(u, skip.rows=1:2)[[1]][2:3]
  releaseDate <- as.Date(strptime(doc$`Last modified`, 
                                  format="%d-%b-%Y"))
  Closest <- which.min(rVersionDate - 
                         releaseDate[releaseDate <= rVersionDate])
  install_url(paste(BaseURL, doc$Name[Closest], sep = ""))
} 

install_archive("reshape")

ここから、少なくとも次のことを関数に追加します。

  • 最初に最新バージョン (「アーカイブ」からではなく) のインストールを試み、それが失敗した場合は先に進みます。
  • 先に進むには、which.min()行をrank()に変更し、rank == 1、rank == 2 などを試して、試行する最大ランクを設定します。

それでも、これは多くの「推測とチェック」です。ソフトウェアだけが自動的に推測とチェックを行っています。そしてもちろん、CRAN にないのにはおそらく正当な理由があるという同じアドバイスが当てはまります!

于 2013-04-20T05:41:39.153 に答える