これは完全にテストされていません (私は最新バージョンの 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 にないのにはおそらく正当な理由があるという同じアドバイスが当てはまります!