Мої особисті тригери для упаковки:
- Я вважаю, що знову використовую код, який я колись написав для іншого проекту аналізу даних.
- Думаю, мені знадобиться метод, про який я щойно написав.
Колега просить у мене коду. Значна частина коду, який я пишу, - це як мінімум стільки ж на замовлення колег (які використовують R, але самі не програмують), скільки для мене.
Я використовую формальні вимоги пакету (документації), щоб "примусити" мене очистити і документувати свій код.
Я погоджуюся з @JohnRos, що між написанням пакету та публікацією пакету існує велика різниця.
Я зазвичай пакую рано, але потім роблю пакунок лише "напівпублічним". Тобто він може бути доступний на внутрішньому сервері (або на r-forge), тому мої колеги можуть отримати доступ до пакету. Але я публікую в CRAN лише після того, як пакет використовувався місяцями або навіть кількома роками близькими колегами. Це не призводить до появи всіх помилок відповідно до пункту №3 @Nick Cox, але їх досить багато.
Версії пакету (я вказую дату після тире в номері версії) полегшують виправлення речей ("щоб зробити це та інше, переконайтеся, що ви вкажете принаймні версію минулого тижня")
Згідно з моїм робочим контрактом, у мого роботодавця є останнє слово щодо того, чи можна і як пакет можна публікувати у зовнішньому світі.
Те, де я ще не маю гарної стратегії упаковки, - це дані.
Коментарі до вашого списку причин:
- відсутність інших пакетів у тому ж підполі;
Якщо я не знаходжу пакет, який виконує те, що мені потрібно, викликає написання коду, але це не має відношення до рішення, пакувати чи ні.
- необхідність обміну з іншими дослідниками та забезпечення відтворюваності експериментів;
Однозначно. Можливо, вже є необхідність ділитися між декількома комп'ютерами, якими я користуюся.
І серед пунктів, які можуть призвести до протилежного рішення:
- частина методів, які вже використовуються в деяких інших пакетах;
Ви можете імпортувати ці методи у свій пакунок / код: це суперечить написанню такого коду, але стосується упаковки лише опосередковано.
- кількість нових функцій, недостатня для обгрунтування створення нового незалежного пакету.
Для мене немає мінімальної кількості функцій для запуску пакету. На мій досвід, пакети, як правило, зростають "автоматично". Навпаки, після того, як я кілька разів відгалужував новий пакет від іншого (тому що, наприклад, деякі допоміжні функції зрештою виявилися тематично різними і корисними і в інших ситуаціях), я зараз скоріше створення нових пакетів негайно.
Крім того, якщо ви не написали документацію та тести, це може бути непосильним обсягом роботи, коли накопичилася "достатня" кількість функцій для створення пакету.
(Якщо ви все-таки пишете їх негайно, то додаткові зусилля щодо внесення їх у пакет незначні, коли ви знаєте робочий процес).