Comment gérer plusieurs localisations de package (dossiers) dans R?
Avant la mise à jour de R-2.14, je veux profiter de l'occasion pour rationaliser la structure de dossiers de mes paquets installés.
En ce moment j'utilise le R par défaut, c'est à dire tous les nouveaux paquets installés va à R_LIBS_USER. Cependant, j'ai vraiment la distinction entre les deux classes du package:
- Paquets que j'ai utiliser plusieurs fois pour faire mon travail, par exemple
plyr
,data.table
, etc. - Paquets que j'ai installer juste à expérimenter avec (souvent à reproduire une question ou une réponse sur StackOverflow)
Depuis install.packages
offre une option pour spécifier un lib
argument, c'est clairement possible.
Est-il un moyen facile de gérer endroits, par exemple, par la création de certains des paramètres prédéfinis /fonction wrapper dans .RProfile
ou RProfile.Site
?
- Voici une relative et utile Q&A.
Vous devez vous connecter pour publier un commentaire.
Hadley excellent package
devtools
fournit une fonctiondev_mode
.http://www.inside-r.org/packages/cran/devtools/docs/dev_mode
Ici vous pouvez trouver un exemple d'utilisation: https://gist.github.com/1150934
Fondamentalement,
est une manière puissante.
Il existe de nombreuses options pour cela. La première chose que j'ai faite a été d'adapter mes Rprofile.site pour contenir la ligne suivante, ce qui rend ma bibliothèque par défaut, le chemin d'un répertoire ne figurent pas dans ma R installation.
Ce fait
D:/R/Library
mon chemin par défaut sans perdre les autres chemins. Vous pouvez ajouter deux chemins d'accès à celui-ci, direD:/R/Library/Work
etD:/R/Library/Test
. Celui qui est placé dans la première position est utilisé par défaut si vous ne spécifiez pas de lib dansinstall.packages()
.Ensuite, vous pouvez affecter deux variables dans votre .Rprofile.site. Ceux-ci sont affectés à la base de l'espace de noms, et donc toujours accessible et n'est pas éliminé par ls(). Quelque chose comme
qui permet d'installer les paquets comme:
Il y a d'autres options aussi, je suppose, mais c'est comment je roule.
R CMD check ...
. La raison en est queR CMD check
etR CMD build
ne pas lire.Rprofile
(cran.r-project.org/doc/manuals/...).Vous êtes censé être en mesure de spécifier plusieurs de la bibliothèque des chemins/arbres par l'intermédiaire d'un colon liste de chemins séparés dans la Variable d'Environnement R_LIBS. Je ne pouvais pas obtenir que cela fonctionne de manière fiable sur les R 2.13.1-patched - il ne prend jamais la première entrée. J'ai eu
R_LIBS
etR_LIBS_USER
fonctionne de manière fiable sur mon système j'ai normalement qu'à l'ancien..libPaths()
pouvez ajouter de nouveaux chemins à l'ensemble de la bibliothèque des arbres de recherche. J'aimerais simplement ajouter les appels à.libPaths(new)
dans mon.Rprofile
pour ajouter pertinentes arbres pour chaque session. Ensuite, vous pouvez choisir l'endroit où installer les paquets au moment de l'installation - c'est à dire de l'arbre à utiliser.À répondre, j'ai à donner un peu de contexte.
Pour l'application de l'reproduceability, j'essaie de faire un script de choses, y compris la totalité de mon R de l'installation. J'ai un script "initialiseur.r" qui, entre autres choses, installe les paquets, et j'ai organisé des paquets par paquets, tels que ceux relatifs à cacher, ceux liés à la visualisation, l'échantillonnage spatial, stats, etc. - ma petite tâche de points de vue, si vous voulez.
Par exemple, voici un extrait:
- Je combiner certaines des bottes en un "gros" paquets (ou primaire) de la liste et d'autres vont dans le "Secondaire" de la liste. Je suis sûr que tout installer sur la liste principale - ces sont nécessaires pour avoir un motif raisonnable de R de l'environnement, d'utiliser mes propres scripts, fonctions, packages, etc. (Btw, certains paquets sont affectés à plusieurs faisceaux, mais seulement quelques-uns; je de-dupe avant de traiter une liste agrégée.)
Je puis spécifiez une plate-forme spécifique de bibliothèque par défaut, et de l'installer là. Cependant, cette capacité est extensible et cette idée peut être étendue pour inclure l'option d'emplacements pour chaque package bundle (ou package): juste une carte de faisceau de nom, par exemple "CodingTools" vers un répertoire unique (chemin de la bibliothèque), dites "D:/R/Library/CodingTools". Cela peut être fait dans le script d'initialisation, avec des listes de & options par défaut, ou les emplacements pourraient être stockées ailleurs, comme une table de hachage, JSON, ou une base de données.
Comme d'autres l'ont dit, la valeur par défaut de la bibliothèque des chemins doivent être communiquées à R. Qui peut être fait dans .RProfile.site. Dans mon cas, j'ai un autre script qui est utilisé pour initialiser la R exemple comme j'aimerais qu'il. J'essaie d'éviter de paramètres externe les fichiers qui sont lus par R (par exemple .Rprofile), et au lieu de faire toutes les initialisations via des appels de fonction dans mon propre paquet (si les paramètres sont encore à l'extérieur). Ce qui tend à rendre plus facile pour moi de déboguer et de reproduire mon travail. Donc, ma bibliothèque chemins peuvent être inclus dans le même genre de JSON où mon emplacements de fichier de données sont spécifiés.
Personnellement, je veux sortir de la définition des faisceaux dans le script, et au lieu d'utiliser JSON, que je peux plus facilement créer différents fichiers JSON pour les différentes configurations de l'installation. J'ai déjà le faire pour la plupart des autres fins de reproductibles travail.