Организация исходного кода R - PullRequest
46 голосов
/ 18 февраля 2010

Все,

Я начинаю писать объектно-ориентированный R-код впервые и ожидаю иметь несколько R-файлов с зависимостями между ними.Я новичок в R и еще не написал ничего, кроме одного массивного скрипта для проверки идей.Есть ли в Интернете ресурсы, которые дают советы о том, как следует организовывать код?Если не считать описаний о том, как создавать пакеты, я не могу найти такое руководство.На данный момент, я просто хочу организовать код таким образом, чтобы он делал загрузку и взаимодействие с коллекцией подпрограмм как можно более простой.

Благодарим вас за любые рекомендации.

Крис

Ответы [ 2 ]

43 голосов
/ 18 февраля 2010

Этот вопрос очень тесно связан с: «Как организовать большие программы R?»

Вам следует подумать о создании пакета R. Вы можете использовать функцию package.skeleton, чтобы начать с заданного набора R файлов. Я также настоятельно рекомендую использовать roxygen для документирования пакета в начале, потому что это намного сложнее сделать после факта.

Чтение "Запись расширений R" . В онлайн-книге «Статистика с R» есть раздел на эту тему . Также взгляните на Создание пакетов R: Учебное пособие Фридриха Лейша. Наконец, если вы находитесь в Нью-Йорке, приходите на предстоящее собрание группы use-R в Нью-Йорке по «Создание пакетов R: краткое введение с примерами» .

Просто перефразирую некоторые предложения о передовой практике:

  • Пакет позволяет использовать R CMD check, что очень полезно при обнаружении ошибок; отдельно вы можете посмотреть, используя пакет codetools.
  • Пакет также заставляет вас делать минимальное количество документации, что в конечном итоге приводит к лучшим методам.
  • Вам также следует рассмотреть возможность выполнения модульного тестирования (например, с помощью RUnit ), если вы хотите, чтобы ваш код был устойчивым / поддерживаемым.
  • Вам следует рассмотреть возможность использования руководства по стилю (например, Google Style Guide ).
  • Используйте систему контроля версий с самого начала, и если вы собираетесь сделать свой код открытым исходным кодом, тогда подумайте об использовании github или r-forge.

Edit:

Относительно того, как вносить инкрементные изменения без пересборки и установки полного пакета: я считаю, что проще всего сделать изменения в соответствующем R-файле, а затем использовать команду source для загрузки этих изменений. После загрузки библиотеки в сеанс R она всегда будет ниже в среде (и будет иметь более низкий приоритет), чем .GlobalEnv, поэтому любые изменения, которые вы вносите или загружаете напрямую, будут использоваться первыми (используйте команду search) чтобы увидеть это). Таким образом, вы можете использовать свой пакет и перезаписывать изменения во время их тестирования в среде.

В качестве альтернативы, вы можете использовать IDE, например StatET или ESS. Они делают загрузку отдельных строк или функций из пакета R очень простой. StatET особенно хорошо разработан для управления пакетами в структуре, подобной каталогу.

0 голосов
/ 25 февраля 2017

это для пользы других, которые направляются на этот пост после их поиска. Я тоже столкнулся с точно таким же сценарием и не нашел ресурса, который бы это четко объяснил. Вот моя попытка поставить решение в несколько простых шагов:
1) Создайте новый каталог проекта
2) Создание пакета через R studio (тот же процесс, что и выше)
3) Держите оба в одном месте (чтобы избежать путаницы).
4) Установите и загрузите пакеты: devtools и и roxygen2.
5) использовать функцию load_all ().

И все готово.

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