Виртуальная среда в R?

Я нашел несколько сообщений о лучшей практике, воспроизводимости и рабочем процессе в R, например:

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

Исходя из фона Python, я привык к концепции виртуальной среды. В сочетании с простым списком требуемых пакетов это имеет некоторый путь к тому, чтобы установленные пакеты и библиотеки были доступны на любой машине без излишней суеты. Несомненно, это не гарантия - разные ОС имеют свои собственные недостатки и особенности, но это дает вам 95% пути.

Существует ли такая вещь внутри R? Даже если это не так сложно. Например, просто поддерживая простой текстовый список необходимых пакетов и script, который будет устанавливать все, что отсутствует?

Я вот-вот начну использовать R в первый раз, вероятно, в сочетании с Sweave, и в идеале хотел бы начать наилучшим образом! Спасибо за ваши мысли.

Ответ 1

Я собираюсь использовать комментарий, отправленный @cboettig, чтобы решить этот вопрос.

Packrat

Packrat - это система управления зависимостями для R. Дает вам три важных преимущества (все они сосредоточены на ваших потребностях в переносимости).

  • Изолированный: установка нового или обновленного пакета для одного проекта не приведет к разрыву ваших других проектов и наоборот. Thats, потому что packrat дает каждому проекту свою собственную библиотеку частных пакетов.

  • Portable: легко переносите свои проекты с одного компьютера на другой, даже на разных платформах. Packrat упрощает установку пакетов, от которых зависит ваш проект.

  • Воспроизводимые: Packrat записывает точные версии пакетов, на которые вы полагаетесь, и гарантирует, что те точные версии будут теми, которые будут установлены везде, где бы вы ни находились.

Что дальше?

Ответ 2

Менеджер пакетов Anaconda conda поддерживает создание окружений R.

conda create -n r-environment r-essentials r-base
conda activate r-environment

У меня был большой опыт использования conda для поддержки различных установок Python, как пользовательских, так и нескольких версий для одного и того же пользователя. Я испытал R с conda и jupyter-notebook и он прекрасно работает. По крайней мере, для моих нужд, включая анализ последовательности РНК с использованием DEseq2 и связанных пакетов, а также data.table и dplyr. Есть много пакетов Bioconductor доступны в conda через bioconda и в соответствии с замечаниями по этому вопросу SO, похоже install.packages() может работать.

Ответ 3

Проверьте roveR, решение для управления контейнером R. Подробнее см. https://www.slideshare.net/DavidKunFF/ownr-technical-introduction, в частности слайд 12.

Чтобы установить roveR, выполните следующую команду в R:

install.packages("rover", repos = c("https://lair.functionalfinances.com/repos/shared", "https://lair.functionalfinances.com/repos/cran"))

Чтобы в полной мере использовать возможности roveR (включая установку конкретных версий пакетов для воспроизводимости), вам понадобится доступ к laiR - для CRAN, вы можете использовать наш экземпляр laiR в https://lair.ownr.io, для загрузки ваших собственных пакетов и обмена ими с вашей организацией вам понадобится лицензия laiR. Вы можете связаться с нами по электронному адресу в приведенной выше презентации.

Ответ 4

Чтобы добавить к этому:

Примечание: 1. Anaconda уже установлена 2. Предполагается, что ваш рабочий каталог - "C:"

Для создания желаемой среды → "r_environment_name"

C:\>conda create -n "r_environment_name" r-essentials r-base

Чтобы увидеть доступные среды

C:\>conda info --envs

,...

Активировать среду

C:\>conda activate "r_environment_name"

(r_environment_name) C:\>

Запустите Jupyter Notebook и пусть вечеринка начинается

(r_environment_name) C:\> jupyter notebook

Возможно, эта ссылка поможет и для подобного файла "needs.txt" → Есть ли что-то вроде require.txt для R?