Есть ли хорошие ресурсы / лучшие практики для «индустриализации» кода в R для проекта по науке о данных? - PullRequest
1 голос
/ 25 апреля 2019

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

Заранее спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете сделать пакет R из своего проекта, поскольку в нем есть все необходимое для автономного проекта, которым вы хотите поделиться с другими:

  1. Легко поделиться, скачать и установить
  2. R имеет очень эффективную систему документирования ваших функций и объектов при работе в R Studio. В сочетании с roxygen2 он позволяет точно документировать каждую функцию и делает код более понятным, поскольку вы можете избежать комментариев с помощью встроенных комментариев (но, в любом случае, делайте это, если необходимо)
  3. Вы можете довольно легко указать, какие зависимости понадобятся вашему пакету, чтобы каждый знал, что установить для работы вашего проекта. Вы также можете использовать packrat, если хотите подражать Python virtualenv
  4. R также предоставляет систему документирования длинных форматов, которая называется виньетки и похожа на печатную записную книжку: вы можете отображать код, текст, результаты кода и т. Д. Здесь вы будете писать рекомендации и методы использования функций, подробные инструкции для определенного метода и т. д. После установки пакета они автоматически включаются и становятся доступными для всех пользователей.
  5. Единственным недостатком является следующее: поскольку R является функциональным языком программирования, пакет состоит в основном из функций и некоторых других соответствующих объектов (например, данных), но не из сценариев.

Подробнее о последней точке , если ваш проект состоит из скрипта, который вызывает набор функций для выполнения чего-либо, он не может напрямую появляться в пакете. Здесь есть два варианта: а) вы создаете диспетчерскую функцию, которая выполняет набор функций для выполнения работы, так что пользователям просто нужно вызвать одну функцию для запуска всего метода (что не очень хорошо для обслуживания); б) Вы заставляете весь сценарий появляться в виньетке (см. выше). С помощью этого метода люди просто должны написать один R-файл (который можно скопировать из виньетки), который может выглядеть следующим образом:

library(mydatascienceproject)
library(...)
...
dothis()
dothat()
finishwork()

Это позволяет вам выполнить всю работу с терминала или удаленной машины с помощью Rscript , со следующим (используя argparse для добавления аргументов)

Rscript myautomatedtask.R --arg1 anargument --arg2 anotherargument

И, наконец, если вы напишите bash-файл , вызывающий Rscript, вы можете автоматизировать все!

Не стесняйтесь читать Книга Хэдли Уикхэма о R-пакетах , она супер ясна, полна лучших практик и очень помогает в написании ваших пакетов.

0 голосов
/ 25 апреля 2019

Можно потеряться в нескольких файлах в папке проекта, поэтому он должен быть правильно структурирован: ссылка

Соглашения об именах, которые я использую: первое , второе .

Установите случайное начальное число, чтобы выходные данные были воспроизводимыми. Документация важна: вы можете использовать скелет Roxygen в rstudio (по умолчанию ctrl + alt + shift + r).

Я обычно разделяю код на более мелкие, логически связные сценарии и использую сценарий main.R, который использует другие.

Если вы используете специальный набор библиотек, вы можете рассмотреть возможность использования packrat . После того, как вы его настроите, вы сможете управлять установленными библиотеками для конкретных проектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...