Мои личные триггеры для упаковки:
- Я снова использую некоторый код, который я когда-то написал для другого проекта анализа данных.
- Я думаю, что мне понадобится метод, который я только что написал снова.
Коллега просит у меня код. Существенная часть кода, который я пишу, по крайней мере, столько же по запросу коллег (которые используют R, но сами не программируют), чем для себя.
Я использую формальные требования пакета (документации), чтобы «заставить» меня очистить и документировать мой код.
Я согласен с @JohnRos, что существует большая разница между написанием пакета и его публикацией.
Я обычно упаковываю вещи рано, но потом делаю упаковку только «полупубликой». То есть он может быть доступен на внутреннем сервере (или на r-forge), поэтому мои коллеги могут получить доступ к пакету. Но я публикую в CRAN только после того, как пакет использовался близкими коллегами в течение нескольких месяцев или даже нескольких лет. Это не поднимает все ошибки в соответствии с пунктом № 3 @Nick Cox, но изрядное их количество.
Версии пакета (я поставил дату после тире в номере версии) позволяют легко что-то исправить («чтобы сделать это и то, убедитесь, что вы введете хотя бы версию прошлой недели»)
Согласно моему рабочему контракту, мой работодатель имеет последнее слово при принятии решения о том, можно ли и как опубликовать пакет во внешнем мире.
Дело в том, где я не еще есть стратегия хорошо для упаковки данных.
Комментарии к вашему списку причин:
- отсутствие других пакетов в том же подполе;
Отсутствие пакета, который делает то, что мне нужно, вызывает написание кода, но это не имеет отношения к решению, упаковывать или нет.
- необходимость обмена с другими исследователями и обеспечения воспроизводимости экспериментов;
Определённо. Возможно, уже нужно делить между несколькими компьютерами, которые я использую.
И среди моментов, которые могут привести к противоположному решению:
- часть используемых методов уже присутствует в некоторых других пакетах;
Вы могли бы импортировать эти методы в свой пакет / код: это противоречит написанию такого кода, но только косвенно связано с упаковкой.
- Количество новых функций недостаточно для обоснования создания нового независимого пакета.
Для меня нет минимального количества функций для запуска пакета. По моему опыту, пакеты имеют тенденцию расти «автоматически». Напротив, после того, как я несколько раз обнаружил, что разветвляю новый пакет из другого (потому что, например, некоторые вспомогательные функции, в конце концов, оказались тематически разными и полезными и в других ситуациях), я теперь довольно создание новых пакетов немедленно.
Кроме того, если вы не написали документацию и тесты, это может быть чрезмерно трудоемким, если «накопилось» достаточное количество функций для создания пакета.
(Если вы пишете их немедленно, то дополнительные усилия по добавлению их в пакет незначительны, если вы знаете рабочий процесс).