62 votes

Espaces de noms dans les paquets R

Comment apprendre à donner un espace de noms à un paquetage R ? Je trouve la documentation dans "R Extensions" très bien, mais je ne comprends pas vraiment ce qui se passe quand une variable est importée ou exportée - j'ai besoin d'un guide pour les nuls sur ces directives.

Comment décidez-vous de ce qui est exporté ? Est-ce que c'est juste tout ce qui ne devrait pas nécessiter la syntaxe pkg:::var ? Qu'en est-il des importations ?

Les importations permettent-elles de s'assurer plus facilement que l'utilisation des fonctions d'autres paquets n'est pas confuse lorsque les noms de fonctions se chevauchent ?

Y a-t-il des considérations particulières pour les classes S4 ?

Les paquets que je connais et qui utilisent des espaces de noms tels que sp et rgdal sont assez compliqués - existe-t-il des exemples simples qui pourraient rendre les choses plus claires ?

39voto

hadley Points 33766

J'ai un début de réponse sur le wiki de devtools : https://r-pkgs.org/Metadata.html

0 votes

J'aime beaucoup ce wiki et son évolution. C'est une excellente ressource !

0 votes

@hadley Pour les paquets que j'ai créés, je dois maintenant ajouter un espace de noms pour la version 2.14. Ce fil est un peu au-dessus de ma compréhension pour le moment. Lorsque j'ouvre le dossier de plyr par exemple, je vois un document nommé NAMSPACE. Si je devais mettre ce document avec le même format que vous avez pour mes fonctions dans mon dossier package, est-ce que c'est tout ce que j'ai à faire ?

1 votes

@TylerRinker Oui, c'est l'essentiel. Créer un export(...) pour chaque fonction que vous souhaitez exporter. si vous importez des paquets, vous devrez également ajouter une déclaration import(...) pour chaque paquet. Voir aussi la réponse de @DirkEddelbuettel sur cette page.

30voto

SFun28 Points 6444

Quelques années plus tard, voici....

J'ai consolidé les résultats obtenus par Chambers, d'autres messages StackOverflow et beaucoup de bricolage dans R : https://blog.thatbuthow.com/how-r-searches-and-finds-stuff/

Il s'agit moins de la mise en œuvre de NAMESPACE/IMPORTS/DEPENDS que de l'objectif de ces structures. Il répond à certaines de vos questions.

0 votes

Merveilleusement clair (contrairement au document "Writing R Extensions"...)

15voto

Tyler Points 6320

L'explication la plus claire que j'ai lue se trouve dans l'ouvrage de John Chambers intitulé Logiciel d'analyse des données : Programmation avec R page 103. Je ne connais pas d'explications gratuites en ligne qui soient meilleures que celles que vous avez déjà trouvées dans le manuel R Extensions.

0 votes

Merci, cela me rappelle que je ne l'ai pas encore lu, même si j'étais impatiente de le voir publié.

0 votes

L'explication de ce livre est vraiment détaillée, exactement ce que je recherchais

12voto

Dirk Eddelbuettel Points 134700

Vous pouvez également choisir un petit paquet facile et le suivre.

J'ai regardé de manière semi-aléatoire résumé qui est l'un de mes plus petits paquets. Je charge une (petite) bibliothèque dynamique et j'exporte un symbole, le symbole digest() fonction. Voici le contenu du fichier NAMESPACE :

## package has dynamic library
useDynLib(digest)

## and one and only one core function
export(digest)

Jetez un coup d'œil au reste des fichiers sources et essayez peut-être de lire Écrire des extensions R à côté de l'examen de l'exemple, et faites quelques expériences.

2 votes

Joli, plus les algorithmes de somme de contrôle - je me demandais s'il existait un Rc . Je veux dire un paquetage R pour cela ;)

1 votes

Oui. C'est en regardant les fichiers NAMESPACE des paquets existants que j'ai appris à le faire.

2voto

mdsumner Points 13001

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X