Je prévois de commencer à écrire des packages R.
J'ai pensé qu'il serait bon d'étudier le code source des paquets existants pour apprendre les conventions de la construction de paquets.
Mes critères pour les bons forfaits à étudier:
- Idées statistiques / techniques simples : il s’agit d’apprendre les mécanismes de la construction de paquets. Comprendre le paquet ne devrait pas nécessiter une connaissance détaillée d'un domaine spécifique sur le sujet du paquet.
- Style de codage simple et conventionnel : je recherche quelque chose de plus que,
Hello World
mais pas beaucoup plus. Des astuces et des bidouilles idiosyncratiques seraient gênantes lors du premier apprentissage des packages R. - Bon style de codage : Le code est bien écrit. Il révèle à la fois une compréhension du bon codage en général et une connaissance des conventions de codage de R.
Des questions:
- Quels forfaits seraient intéressants à étudier?
- Pourquoi le code source du paquet suggéré serait-il bon à étudier par rapport aux critères mentionnés ci-dessus ou à tout autre critère pouvant être pertinent?
Mise à jour (13/12/2010) Pour faire suite aux commentaires de Dirk, je voulais préciser que de nombreux paquetages seraient intéressants à étudier en premier. Je conviens également que les packages fourniront des modèles pour différentes choses (par exemple, vignettes, classes S3, classes S4, tests unitaires, Roxygen, etc.). Néanmoins, il serait intéressant de lire des suggestions concrètes sur les bons packages pour commencer et sur les raisons pour lesquelles ils seraient bons pour commencer.
J'ai également mis à jour la question ci-dessus pour faire référence à "packages" plutôt que "package".
Réponses:
Je suggérerais de regarder le paquet zoo pour les raisons suivantes:
useDynLib
,import
,export
etS3method
;RUnit
;.Call
interface;Il n’utilise pas de roxygen, ce qui est très pratique, mais 7 sur 8 n’est pas mauvais. ;-)
Pour répondre à vos critères:
zoo
est une classe matricielle ordonnée par quelque chose . Aucune connaissance spécifique au domaine nécessaire.zoo
semble avoir quelques conventions de codage idiosyncratiques, mais rien d’excessif n’empêche de comprendre le code.zoo
vise à être aussi compatible avec R que possible.la source
Je ne me considère pas comme un développeur de progiciels R établi, mais j'ai récemment suivi le processus d'écriture et de maintenance d'un progiciel pour mon environnement de travail.
J'avais précédemment écrit / maintenu / mis à jour un ensemble de scripts que je transmettrais d'un projet à l'autre via la
source()
fonction. Le résultat final a été que je me retrouvais avec des scripts principalement redondants qui traînaient à divers endroits sur nos lecteurs réseau. Il n’a jamais été clair où se trouvaient les ensembles de scripts les plus récents. Depuis, j'ai migré vers l'écriture / maintenance d'un paquet utilisant roxygen. Cela a considérablement simplifié ma vie et facilité le partage de mon travail avec des collègues.Sur la base de vos critères ci-dessus, j'approuve la recommandation de revoir les paquets écrits par Hadley. En particulier, je pense que la lecture du wiki de devtools serait très utile. Le code de Hadley est bien documenté et plusieurs de ses paquets utilisent roxygen. Je pense que l'écriture et la maintenance d'un document pour les fonctions R et la documentation R sont beaucoup plus faciles que de les séparer en deux emplacements (fichiers .R et .RD).
Les paquets de Hadley servent également des concepts assez basiques et sont relativement faciles à supprimer (à mon humble avis) si vous recherchez des indications sur les idées de l'aspect technique. Je me retrouve à fouiller dans le code source de plyr lorsque je cherche un pointeur sur la documentation roxygen ou d'autres tâches fondamentales.
la source
Pourquoi ne pas adopter une méthode d'échantillonnage aléatoire à caractère empirique? Choisissez-en quelques-uns et voyez quel travail vous convient.
Blague à part, il suffit de regarder quelques paquets que vous utilisez vous-même et que vous connaissez bien. Leur téléchargement est facile, ou si vous préférez, vous pouvez également les visualiser via une interface Web de R-Forge, RForge ou Github.
Vous allez probablement vous retrouver avec différents packages pour différentes idées. Certains peuvent vous aider à intégrer une vignette, par exemple. Certains peuvent aider avec le code compilé. Ou des tests unitaires. Ou Roxygen. Il y en a environ 2600, alors pourquoi être obsédé par un seul?
la source
Un autre conseil peut être de regarder les paquets que votre livre dépendra ou interagira avec, surtout si ceux-ci implémentent certains éléments mentionnés par Joshua Ulrich ou ont été écrits par des auteurs renommés. Il peut être utile de savoir comment les choses se passent dans votre domaine, afin d’assurer une certaine compatibilité. Souvent, les gens auront réfléchi à certains problèmes et la lecture de leur solution pourrait être utile.
la source
Je recommanderais le paquet de remodelage de Hadley. vous pouvez trouver la source sur https://github.com/hadley/reshape
la source