Я планирую начать писать R пакетов.
Я подумал, что было бы хорошо изучить исходный код существующих пакетов, чтобы изучить правила построения пакетов.
Мои критерии для хороших пакетов для изучения:
- Простые статистические / технические идеи : цель состоит в том, чтобы узнать о механике конструкции упаковки. Понимание пакета не должно требовать подробных подробных знаний о предметной области пакета.
- Простой и традиционный стиль кодирования : я ищу что-то немного больше,
Hello World
но не намного больше. Особые хитрости и хаки будут отвлекать при первом изучении R пакетов. - Хороший стиль кодирования : код хорошо написан. Это раскрывает как понимание хорошего кодирования в целом, так и понимание правил кодирования в R.
Вопросов:
- Какие пакеты было бы хорошо изучить?
- Почему предлагаемый исходный код пакета будет полезно изучить относительно упомянутых выше критериев или любых других критериев, которые могут иметь отношение?
Обновление (13/12/2010) Следуя комментариям Дирка, я хотел прояснить, что, без сомнения, много пакетов было бы полезно изучить в первую очередь. Я также согласен, что пакеты будут предоставлять модели для разных вещей (например, виньетки, классы S3, классы S4, модульное тестирование, Roxygen и т. Д.). Тем не менее, было бы интересно прочитать конкретные предложения о хороших пакетах и причинах, по которым они будут хорошими для начала.
Я также обновил вопрос выше, чтобы ссылаться на «пакеты», а не «пакет».
Ответы:
Я бы посоветовал посмотреть на пакет зоопарка по следующим причинам:
useDynLib
,import
,export
иS3method
;RUnit
;.Call
интерфейс;Он не использует roxygen, что очень удобно, но 7 из 8 - неплохо. ;-)
Чтобы ответить на ваши критерии:
zoo
это матричный класс, упорядоченный чем-то . Не требуется знание предметной области.zoo
похоже, есть несколько своеобразных соглашений по кодированию, но ничего сверх того, что мешает понять код.zoo
стремится быть максимально совместимым с R.источник
Я не считаю себя признанным разработчиком пакетов R, но недавно прошел процесс написания и поддержки пакета для моей рабочей среды.
Ранее я писал / поддерживал / обновлял набор сценариев, которые я передавал из проекта в проект через
source()
функцию. Конечным результатом этого было то, что я в итоге получал в основном избыточные скрипты, которые зависали в разных местах на наших сетевых дисках. Никогда не было ясно, где находится самый современный набор сценариев. С тех пор я перешел на написание / обслуживание пакета с использованием roxygen. Это значительно упростило мою жизнь и позволило мне поделиться своей работой с коллегами.Основываясь на ваших критериях выше, я рекомендую пересмотреть пакеты, написанные Хэдли. В частности, я думаю, что чтение вики devtools было бы очень полезно. Код Хэдли хорошо документирован, и некоторые из его пакетов используют roxygen. Я думаю, что написание и ведение одного документа как для функций R, так и для документации R гораздо проще, чем разделять их на две части (файлы .R и .RD).
Пакеты Хэдли также служат некоторым довольно базовым понятиям и относительно просты в отборе (imho), если вы ищете указатели на идеи технических аспектов. Я копаюсь в исходном коде plyr, когда ищу указатель на документацию roxygen или другие фундаментальные задачи.
источник
Почему бы не использовать эмпирически управляемый подход случайной выборки? Просто выберите несколько и посмотрите, какая работа для вас.
Шучу в сторону, просто взгляни на несколько пакетов, которые ты сам используешь и с которыми знаком. Скачать их легко, или, если вы предпочитаете, вы также можете просматривать их через веб-интерфейс в R-Forge, RForge или Github.
Скорее всего, вы получите разные пакеты для разных идей. Некоторые могут помочь вам с тем, как они интегрируют, скажем, виньетка. Некоторые могут помочь с скомпилированным кодом. Или юнит-тесты. Или Roxygen. Их около 2600, так зачем одерживать верх над одним лучшим?
источник
Другим советом может быть поиск пакетов, с которыми вы будете зависеть или взаимодействовать, особенно если они реализуют некоторые элементы, упомянутые Джошуа Ульрихом или написанные известными авторами. Может быть полезно узнать, как все делается в вашей области, чтобы обеспечить некоторую совместимость. Часто люди думают об определенных проблемах, и чтение их решения поможет.
источник
я бы порекомендовал Хэдли изменить форму пакета. Вы можете найти источник на https://github.com/hadley/reshape
источник