Установка более старой версии пакета R

Я пытаюсь использовать Rpy2 и ggplot2, но получаю ошибку. После некоторого поиска этой ошибки в Интернете я обнаружил, что ошибка возникает из-за изменений в пакете ggplot2, которые еще не отражены в Rpy2 (например, см. Этот пост (Изменить: ссылка теперь не работает)).

Теперь мне нужно установить более старую версию ggplot2. Вот псевдокод для того, что я хочу:

install.packages("ggplot2", version='0.9.1')

Но install.packages не имеет version аргумент. Как мне это сделать?

8 ответов

Решение

Чтобы установить более старую версию пакета из исходного кода (в R):

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

Если это не работает для вас, и вы работаете в Windows, возможно, причина в отсутствии соответствующей цепочки инструментов для сборки / компиляции пакетов. Обычно вы устанавливаете предварительно скомпилированный двоичный файл из CRAN, но они только архивируют исходные пакеты, а не двоичные файлы. [1] Это означает, что вам нужно установить Rtools, чтобы вы могли компилировать все локально. (Примечание: Rtools не является пакетом R.)

Ответ @ shadow ниже также дает аргумент, что вы можете использовать devtools::install_version(), Это также хорошая идея, но также требует использования Rtools в Windows.

По состоянию на 18 сентября 2015 года на CRAN появилась новая версия пакета. Это зависит от сервера MRAN Revolution Analytics для установки пакетов для определенных версий или дат:

# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)

# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))

Преимущество этого заключается в том, что Rtools не требует установки бинарных пакетов в Windows, а работает только начиная с 2014-09-17 (когда был запущен MRAN).

Чтобы установить более старую версию из командной строки (за пределами R):

Вы также можете установить пакет, используя R CMD INSTALL в командной строке (терминал, командная строка и т. д.), если у вас есть локальный источник пакета ("tarball"), например, с помощью wget (если есть)

wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz

или, если вы работаете в Windows, эквивалент с использованием PowerShell будет:

(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")

или вы можете просто загрузить исходный код из архива CRAN через веб-браузер.

Чтобы установить из локального файла, вы можете просто сделать:

R CMD INSTALL ggplot2_0.9.1.tar.gz

Это должно работать на любой платформе (с тем же предостережением - как и выше - о необходимости цепочки инструментов для сборки пакетов).


[1] Это больше не совсем верно. С марта 2016 года CRAN начал размещать сервер "CRAN Archive", который содержит двоичные файлы Windows и Mac для очень старых версий R (> 5 лет). Теперь вы можете установить прямо с этого сервера, используя install.packages() , Смотрите новый R FAQ 7.44 для некоторых деталей.

devtools пакет предлагает install_version функция, которая может сделать это напрямую.

require(devtools)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")

чистый install.packages метод

Смотрите эту ветку в списке рассылки r-devel. В ответ Курту Уилеру Курт Хорник раскрывает недокументированную функцию веб-сайта CRAN, чтобы указать конкретную версию пакета.

Этот метод будет работать до тех пор, пока у вас уже установлены все необходимые зависимости:

package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)

Обратите внимание на структуру URL выше. Это решает проблему, связанную с тем, что CRAN имеет другую структуру URL для последней версии, чем для архивных версий:

# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz

remotes::install_version метод

Другой вариант заключается в использовании remotes::install_version функция Тем не менее, вам нужно будет установить remotes пакет

Вы можете скачать соответствующую версию по ссылке ниже в виде zip-файла.

http://cran.r-project.org/src/contrib/Archive/ggplot2/

В R Studio: Инструменты >> Установить пакеты >> Установить из: (выберите раскрывающийся список)

Файл архива пакета (.zip, .tar.gz).

Выберите новый загруженный пакет-zip-файл и установите пакет

E сть versionsпакет, который значительно упрощает эту задачу, для версий пакетов, выпущенных с 2014-09-17. Он использует моментальные снимки сервера MRAN в Revolution Analytics, чтобы:

  • показать даты выпуска и доступность MRAN любого пакета CRAN (available.versions),

  • установить указанные версии одного или нескольких пакетов (install.versions), или

  • установить версии пакетов, доступные на любую указанную дату (install.dates). Он выполняет установку с сервера MRAN через стандартныйinstall.packages функция, поэтому доступные двоичные версии могут быть установлены вместо того, чтобы компилировать из исходного кода, и могут быть включены зависимости пакетов на указанную дату.

Конечно, могут возникнуть проблемы совместимости с комбинациями версий пакетов и версий R. Для запуска различных версий R см., Например, эту страницу.

С помощью install.packages как описано в другом ответе не работает для меня.

Лучшая альтернатива, которую я нашел, - это использовать функцию. install_url из пакета devtools,

Еще одна возможность, которую я не исследовал дальше:

  1. Загрузите более старый исходный файл.tar.gz из архивов пакетов.
  2. Выполните шаги, описанные на http://rtm.wustl.edu/writings/htrtargz.pdf чтобы установить его локально.

Другой вариант - пакет {Groundhog}. Это помогает установить более старую версию пакета из CRAN, указав дату. Это особенно полезно, когда вы не помните конкретную версию пакета, а скорее время, в которое скрипт все еще работал. В случае {ggplot2} версия 0.9.1 была загружена на CRAN в мае 2012 года, поэтому мы можем взять дату за июнь.

      library("groundhog")
groundhog.library("ggplot2", "2012-06-01")

Нашел хорошее решение, которое у меня сработало (подробности по ссылке).

Команда в библиотеке "repmis":

# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names <- c("e1071", "gtools")
Vers <- c("1.6", "2.6.1")

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)
Другие вопросы по тегам