Исходный код организации R

Все,

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

Оцените любые рекомендации, которые вы можете предоставить.

Крис

Ответ 1

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

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

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

Просто, чтобы перефразировать некоторые предложения о хороших практиках:

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

Edit:

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

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

Ответ 2

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

И все готово.