Виртуальная среда в 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?