Установка более старой версии пакета 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
,
Еще одна возможность, которую я не исследовал дальше:
- Загрузите более старый исходный файл.tar.gz из архивов пакетов.
- Выполните шаги, описанные на 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)