Où R stocke-t-il les packages?

207

La install.packages()fonction dans R est l'utilitaire de décompression automatique qui récupère et installe les packages dans R.

  1. Comment savoir quel répertoire R a choisi de stocker les packages?

  2. Comment puis-je changer le répertoire dans lequel R stocke et accède aux packages?

Milktrader
la source

Réponses:

249

La commande install.packages examine la variable .libPaths. Voici ce que le mien prend par défaut sur OSX:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Resources/library"

Je n'y installe pas de paquets par défaut, je préfère les avoir installés dans mon répertoire personnel. Dans mon .Rprofile, j'ai cette ligne:

.libPaths( "/Users/tex/lib/R" )

Cela ajoute le répertoire "/ Users / tex / lib / R" au début de la variable .libPaths.

James Thompson
la source
c'est ce que j'aimerais faire, mais comment accéder et .profiler? L'invite ne le reconnaît pas comme un objet ou une fonction
Milktrader
7
C'est un fichier . Encore une fois, lisez le manuel fin et / ou l'aide (Démarrage).
Dirk Eddelbuettel
44

Ceci est documenté dans le manuel «R Installation and Administration» fourni avec votre installation.

Sur ma box Linux:

R> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"      
[3] "/usr/lib/R/library"           
R> 

ce qui signifie que le chemin par défaut est le premier de ceux-ci. Vous pouvez remplacer cela via un argument à la fois install.packages()(depuis l'intérieur de R) ou R CMD INSTALL(hors de R).

Vous pouvez également remplacer en définissant la variable R_LIBS_USER.

Dirk Eddelbuettel
la source
J'ai une machine Windows Vista, mais en supposant que la même procédure existe, spécifiez-vous le répertoire dans la liste d'arguments install.packages () avec le nom du package?
Milktrader
3
Avez-vous déjà découvert 'help (install.packages)'? Voir aussi «aide (démarrage)» selon mon dernier commentaire. Et lisez ces manuels. Enfin, sur * doze, j'ai tendance à simplement définir R_LIBS = "C: / opt / R / library" dans un fichier .Renviron. Je sais que vous allez aussi poser des questions à ce sujet - alors lisez l'aide (Démarrage). D'accord? ;-)
Dirk Eddelbuettel
1
J'ai une douzaine de manuels R sur mon Kindle (y compris la page 3000+) et je n'étais pas au courant du fichier d'aide au démarrage. J'ai lu les manuels et je suis tombé dans une impasse. Allez comprendre que c'était une réponse simple tout au long. Est-ce que je perds des points pour les questions RTFM <- Je n'ai pas beaucoup à perdre. Merci encore Dirk. Rendez-vous à R / Finance la semaine prochaine. Accroître les compétences R du mieux que je peux pour ne pas être dépoussiéré pendant les présentations.
Milktrader
1
La page 3000+ est un assemblage de toute la page d'aide - la moins utile. La section «Installation et administration» ci-dessus devrait être très utile pour ce que vous recherchez ici.
Dirk Eddelbuettel
existe-t-il un moyen équivalent de les trouver à partir de la ligne de commande bash? c'est-à-dire, une variable d'environnement qui spécifie où les bibliothèques R sont installées si $R_LIBSet $R_LIBS_USERne sont pas définies? (Je veux pouvoir exécuter un script R dans le inst/répertoire d'un paquet installé) sur n'importe quel système Unix.
David LeBauer
12

Merci pour la direction des deux répondeurs ci-dessus. La suggestion de James Thompson a fonctionné le mieux pour les utilisateurs de Windows.

  1. Allez à l'endroit où votre programme R est installé. C'est ce qu'on appelle R_Homedans la littérature. Une fois que vous l'avez trouvé, allez dans le sous-répertoire / etc.

    C:\R\R-2.10.1\etc
  2. Sélectionnez le fichier dans ce dossier nommé Rprofile.site. Je l'ouvre avec VIM. Vous constaterez qu'il s'agit d'un fichier à nu avec moins de 20 lignes de code. J'ai inséré ce qui suit dans le code:

    # my custom library path
    .libPaths("C:/R/library")

    (Le commentaire a été ajouté pour garder une trace de ce que j'ai fait dans le fichier.)

  3. Dans R, la saisie de la .libPaths()fonction donne la première cible àC:/R/Library

REMARQUE: il existe probablement plusieurs façons d'y parvenir, mais d'autres méthodes que j'ai essayées n'ont pas fonctionné pour une raison quelconque.

Milktrader
la source
1
Je copie cette ligne collée .libPaths=("C:/R/library")dans mon fichier Rprofile.site . Je lance R 2.13.1 64 bits et j'obtiens cette erreur: Erreur: impossible de modifier la valeur de la liaison verrouillée pour '.libPaths' J'utilise Windows 7.
Fred
1
Voir la réponse de Dave : ça devrait être .libPaths("...")(un appel et non une mission).
CodeFox
0

Vous ne voulez pas le '='

Utiliser .libPaths("C:/R/library")dans votre Rprofilefichier .site

Et assurez-vous d'avoir le bon symbole "(Maj-2)

Dave
la source