Как установить и управлять многими версиями пакетов R - PullRequest
20 голосов
/ 14 января 2012

Я разрабатываю платформу для воспроизводимых вычислений с R. Одна проблема, с которой я сталкиваюсь, заключается в том, что некоторый код R может отлично работать в версии XY-Z пакета, но почему вы пытаетесь воспроизвести его 3 года спустя,пакеты обновлены, некоторые функции изменены, и код больше не работает.Эта проблема также касается, например, документов Sweave, использующих пакеты.

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

Предположим, что я ограничусь одной версией R, например, 2.14.Какой практический способ установить множество версий пакетов R, чтобы я мог загрузить их на лету?Я полагаю, что могу сделать что-то вроде создания отдельных каталогов библиотек для каждой версии каждого пакета, а затем с помощью пользовательских аргументов lib.loc при их загрузке.Это будет грязно, хотя.Любые советы или предыдущие попытки сделать что-то подобное?

Мой фреймворк работает на сервере Ubuntu.

Ответы [ 3 ]

4 голосов
/ 14 января 2012

Вы можете установить пакеты с версиями (например, переименовать в каталог foo_1.0 вместо foo) и мягко связать версии, для которых вы хотите заново создать данный снимок R + пакетов в одну библиотеку.Очевидно, что пакеты могут фактически находиться в отдельном дереве, поэтому вы можете иметь library.projectX/foo -> library.all/foo/1.0.

1 голос
/ 14 января 2012

операционная система дает вам еще больше дескрипторов для полного разделения, а стек Debian / Ubuntu - тонна доступных. Два, с которыми я играл, это

  • среды chroot: мы используем это для завершения отдельных сред сборки от хост-машин. Например, все закачки Debian, которые я произвел, встроены в chroot i386 pbuilder, размещенный на моем сервере amd64 Ubuntu. Chroot - очень мощный системный вызов Unix. Chroot, и особенно система pbuilder, построенная на его основе (для сборки пакетов Debian), предназначены для работы без головы.

  • Виртуальные машины: это дает вам полную общность. Моя не очень мощная коробка легко справляется с тремя виртуальными машинами: Debian i386, Ubuntu i386, а также Windoze XP. Для этого я сейчас использую KVM вместе с libvirt; это специфично для Linux. В прошлом я также использовал VirtualBox и VMware.

0 голосов
/ 14 января 2012

Я бы попытался изменить файл DESCRIPTION и изменить поле «Пакет», добавив номер версии.

Например, вы скачиваете исходный код пакета со страницы CRAN (http://cran.r -project.org / web / packages / pls /). Распакуйте сжатый файл (pls_2.3-0.zip) в каталог ("pls /"). Следующие шаги предназначены для изменения имени пакета в DESCRIPTION ("pls / DESCRIPTION") и установки с помощью команды R 'R CMD INSTALL pls /', где 'pls /' - это путь к источнику пакета с измененным файлом DESCRIPTION.

Игра с путями из библиотеки R кажется мне опасной.

...