Вы можете сделать пакет R из своего проекта, поскольку в нем есть все необходимое для автономного проекта, которым вы хотите поделиться с другими:
- Легко поделиться, скачать и установить
- R имеет очень эффективную систему документирования ваших функций и объектов при работе в R Studio. В сочетании с
roxygen2
он позволяет точно документировать каждую функцию и делает код более понятным, поскольку вы можете избежать комментариев с помощью встроенных комментариев (но, в любом случае, делайте это, если необходимо)
- Вы можете довольно легко указать, какие зависимости понадобятся вашему пакету, чтобы каждый знал, что установить для работы вашего проекта. Вы также можете использовать
packrat
, если хотите подражать Python virtualenv
- R также предоставляет систему документирования длинных форматов, которая называется виньетки и похожа на печатную записную книжку: вы можете отображать код, текст, результаты кода и т. Д. Здесь вы будете писать рекомендации и методы использования функций, подробные инструкции для определенного метода и т. д. После установки пакета они автоматически включаются и становятся доступными для всех пользователей.
- Единственным недостатком является следующее: поскольку R является функциональным языком программирования, пакет состоит в основном из функций и некоторых других соответствующих объектов (например, данных), но не из сценариев.
Подробнее о последней точке , если ваш проект состоит из скрипта, который вызывает набор функций для выполнения чего-либо, он не может напрямую появляться в пакете. Здесь есть два варианта: а) вы создаете диспетчерскую функцию, которая выполняет набор функций для выполнения работы, так что пользователям просто нужно вызвать одну функцию для запуска всего метода (что не очень хорошо для обслуживания); б) Вы заставляете весь сценарий появляться в виньетке (см. выше). С помощью этого метода люди просто должны написать один R-файл (который можно скопировать из виньетки), который может выглядеть следующим образом:
library(mydatascienceproject)
library(...)
...
dothis()
dothat()
finishwork()
Это позволяет вам выполнить всю работу с терминала или удаленной машины с помощью Rscript , со следующим (используя argparse для добавления аргументов)
Rscript myautomatedtask.R --arg1 anargument --arg2 anotherargument
И, наконец, если вы напишите bash-файл , вызывающий Rscript, вы можете автоматизировать все!
Не стесняйтесь читать Книга Хэдли Уикхэма о R-пакетах , она супер ясна, полна лучших практик и очень помогает в написании ваших пакетов.