Mes déclencheurs personnels pour l'emballage sont:
- Je trouve que j'utilise à nouveau du code que j'ai écrit une fois pour un autre projet d'analyse de données.
- Je pense que j'aurai besoin de la méthode que je viens d'écrire à nouveau.
Un collègue me demande du code. Une partie substantielle du code que j'écris est au moins autant à la demande de collègues (qui utilisent R mais ne programment pas beaucoup eux-mêmes) que pour moi.
J'utilise les exigences formelles d'un package (documentation) pour me "forcer" à nettoyer et à documenter mon code.
Je suis d'accord avec @JohnRos qu'il y a une grande différence entre écrire un package et publier le package.
J'empaquetage habituellement tôt, mais fais alors le paquet seulement «semi-public». Autrement dit, il peut être disponible sur un serveur interne (ou sur r-forge), afin que mes collègues puissent accéder au package. Mais je ne publie sur CRAN qu'après que le package a été utilisé pendant des mois, voire quelques années, par des collègues proches. Cela n'évoque pas tous les bogues selon le point n ° 3 de @Nick Cox, mais une bonne partie d'entre eux.
Les versions du package (j'ai mis la date après le tiret dans le numéro de version) facilitent la correction des choses ("pour faire ceci et cela, assurez-vous que vous avez installé au moins la version de la semaine dernière")
Selon mon contrat de travail, mon employeur a le dernier mot sur la décision de savoir si et comment un paquet peut être publié dans le monde extérieur.
La chose où je ne fais pas encore de bonne stratégie pour l'emballage, ce sont les données.
Commentaires sur votre liste de raisons:
- l'inexistence d'autres packages dans le même sous-domaine;
Ne pas trouver un package qui fait ce dont j'ai besoin déclenche l' écriture du code, mais cela n'a pas à voir avec la décision de packager ou non.
- la nécessité d'échanger avec d'autres chercheurs et de permettre la reproductibilité des expériences;
Définitivement. Peut-être déjà la nécessité de partager entre plusieurs ordinateurs que j'utilise.
Et parmi les points qui pourraient conduire à une décision contraire:
- une partie des méthodes utilisées déjà présentes dans certains autres packages;
vous pouvez importer ces méthodes dans votre package / code: c'est un point contre l' écriture d'un tel code, mais n'a qu'indirectement à voir avec l'empaquetage.
- nombre de nouvelles fonctions insuffisantes pour justifier la création d'un nouveau package indépendant.
Pour moi, il n'y a pas de nombre minimum de fonctions pour démarrer un package. D'après mon expérience, les packages ont tendance à croître "automatiquement". Au contraire, après m'être retrouvé à quelques reprises à dériver un nouveau paquet d'un autre (parce que, par exemple, certaines fonctions d'aide se sont avérées finalement différentes et utiles dans d'autres situations), je suis maintenant plutôt créer de nouveaux packages immédiatement.
De plus, si vous n'avez pas écrit de documentation et de tests, cela peut représenter un travail prohibitif lorsqu'un nombre "suffisant" de fonctions pour créer un package s'est accumulé.
(Si vous les écrivez immédiatement, l'effort supplémentaire de le mettre dans un package est négligeable une fois que vous connaissez le flux de travail).