Espaces de noms dans les packages R

Comment les gens apprennent-ils à donner un package R à un espace de noms? Je trouve la documentation dans “R Extensions” correcte, mais je ne comprends pas vraiment ce qui se passe lorsqu’une variable est imscope ou exscope – j’ai besoin d’un guide pour ces directives.

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

Est-ce que les importations facilitent la vérification de l’utilisation des autres fonctions du package lorsque les noms de fonctions se chevauchent?

Existe-t-il des considérations spéciales pour les classes S4?

Les packages avec lesquels je connais 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?

Je commence une réponse sur le wiki devtools: http://adv-r.had.co.nz/Namespaces.html

Quelques années plus tard ici …

J’ai consolidé les résultats de Chambers, d’autres publications StackOverflow et beaucoup de bricolage dans R: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/

Cela concerne moins la mise en œuvre de NAMESPACE / IMPORTS / DEPENDS et plus sur le but de ces structures. Répond à certaines de vos questions.

L’explication la plus claire que j’ai lue est dans Software for Data Analysis: Programming with R , page 103 de John Chambers. Je ne connais aucune explication en ligne gratuite qui soit meilleure que ce que vous avez déjà trouvé dans le manuel R Extensions.

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

J’ai regardé de manière semi-aléatoire le résumé qui est l’un de mes plus petits paquets. Je charge une (petite) bibliothèque dynamic et exporte un symbole, la fonction digest() . 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 rest des fichiers sources et essayez peut-être de lire les extensions de Writing R en regardant l’exemple, et faites des expériences.