Эффективное получение старых версий пакетов R

Повторяющийся вопрос о SO заключается в том, что пакет xx недоступен для версии R 2.xx.xx. Для примера пакет gplots требует, чтобы у пользователя был установлен R 3.0 для его установки. Вы можете получить более старые версии в Архиве CRAN, но:

  • Нелегко увидеть, какую версию пакета вам нужно получить для конкретной версии R.
  • Вам нужно создать пакет из исходного кода, который в первую очередь представляет собой (мягкую) задачу под Windows.

Мой вопрос заключается в следующем: существует ли более эффективный рабочий процесс для получения старых версий пакетов, которые соответствуют вашей старой версии R? В духе наличия разных репозиториев пакетов для другой версии ubuntu.

Я знаю, что одним вариантом будет просто получить последнюю версию R, но может быть какая-то насущная причина придерживаться определенной версии R. Например, можно было бы заинтересовать повторение старого эксперимента, который опирается на старой версии R и пакетов поддержки. Или один из них ограничен системным администрированием.

Ответы

Ответ 1

Это полностью непроверено (я запускаю последнюю версию R и у меня нет времени на установку старой версии R, чтобы проверить ее), но, возможно, одна идея - захватить даты из "Архив" msgstr "страница для пакета, сравните это с датой вашей версии 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() и попробовал ранг == 1, ранг == 2 и т.д., возможно, установив максимальный ранг, в котором нужно попробовать.

Тем не менее, это много "угадывания и проверки", только программное обеспечение автоматически выполняет угадывание и проверку. И, конечно же, тот же совет утверждает, что, вероятно, есть веская причина не в CRAN!