Подтвердить что ты не робот

Управление зависимостями в R

Имеет ли R средство управления зависимостями для облегчения зависимостей по конкретным проектам? Я ищу что-то похожее на Java maven, Ruby bundler, Python virtualenv, Node npm и т.д.

Я знаю предложение "Зависимости" в файле DESCRIPTION, а также средство R_LIBS, но они, похоже, не работают совместно, чтобы обеспечить решение некоторых очень распространенных рабочих процессов.

Мне бы хотелось, чтобы вы могли проверить проект и запустить единую команду для сборки и тестирования проекта. Команда должна установить любые необходимые пакеты в конкретную для проекта библиотеку, не затрагивая глобальную установку R. Например:.

my_project/.Rlibs/*
4b9b3361

Ответ 1

Как стоп-пробел, я написал новый пакет rbundler. Он устанавливает зависимости проекта в подкаталог, специфичный для проекта (например, <PROJECT>/.Rbundle), позволяя пользователю избегать использования глобальных библиотек.

Мы используем rbundler в Opower в течение нескольких месяцев и видим значительное улучшение в рабочем процессе разработчиков, тестируемости и ремонтопригодности внутренних пакетов. В сочетании с нашим внутренним репозитором пакетов мы смогли стабилизировать разработку десятков или около того пакетов для использования в производственных приложениях.

Общий рабочий процесс:

  • Проверьте проект из github
  • cd в каталог проекта
  • Запустить R
  • В консоли R:

    Библиотека (rbundler)

    расслоение ( '')

Все зависимости будут установлены в ./.Rbundle, а файл .Renviron будет создан со следующим содержимым:

R_LIBS_USER='.Rbundle'

Любые операции R, выполняемые из этого каталога проекта, будут соответствовать спецификациям проекта и пакетам. Обратите внимание, что, хотя этот метод использует пакет DESCRIPTION для определения зависимостей, он не должен иметь фактическую структуру пакета. Таким образом, rbundler становится общим инструментом для управления проектом R, будь то простой script или полномасштабный пакет.

Ответ 2

К сожалению, Depends: в файле DESCRIPTION: - это все, что вы можете получить по следующим причинам:

  • R сам по себе является кросс-платформенным, но это означает, что нам нужно это для работы на разных платформах и ОС.
  • Зависит от кодирования: за пределами пакетов R требуется кодирование зависимостей переносимым образом в разных операционных системах --- удачная кодировка даже что-то простое, например, "графическая библиотека PNG", которое может быть однозначно разрешено через системы.
  • В Windows нет диспетчера пакетов
  • AFAIK OS X не имеет диспетчера пакетов, который смешивает то, что Apple отправляет и какие другие проекты с открытым исходным кодом предоставляют
  • Даже среди дистрибутивов Linux вы не получаете согласованности: просто возьмите RStudio в качестве примера, который поставляется в двух пакетах (все они предоставляют свои зависимости!) для RedHat/Fedora и Debian/Ubuntu

Это трудная проблема.

Ответ 3

Вы можете использовать следующий рабочий процесс:

1) создайте файл script, который содержит все, что вы хотите настроить, и сохраните его в каталоге projectd, например. projectInit.R

2) отправьте этот script из вашего .Rprofile(или любого другого файла, исполняемого R при запуске) с помощью инструкции try

try(source("./projectInit.R"), silent=TRUE)

Это гарантирует, что даже когда не обнаружено ни одного projectInit.R, R запускается без сообщения об ошибке

3), если вы запустите R в каталоге проекта, файл projectInit.R будет найден, если он присутствует в каталоге, и вы готовы к работе

Это с точки зрения Linux, но должно работать точно так же под окнами и Mac.