267 votes

La modification du chemin par défaut des bibliothèques de R à l'aide de .libPaths dans Rprofile.site ne fonctionne pas.

J'exécute R sous Windows, pas en tant qu'administrateur. Lorsque j'installe un paquet, la commande suivante ne fonctionne pas :

> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable

Pour installer un paquet, je dois spécifier l'emplacement de la bibliothèque :

install.packages("zoo", lib="C:/software/Rpackages")

Pour charger un paquet, je dois également spécifier l'emplacement de la bibliothèque :

library("zoo", lib.loc="C:/software/Rpackages")

Tout cela est OK, mais je voulais voir si je pouvais ajouter C:/software/Rpackages au chemin de la bibliothèque d'une manière ou d'une autre et ainsi ne pas avoir à le taper à chaque fois.

En faisant des recherches en ligne, j'ai trouvé qu'une façon de le faire est de modifier le fichier Rprofile.site et d'ajouter la ligne

.libPaths("C:/software/Rpackages")

Cependant, après avoir effectué cette opération et lancé RStudio, j'obtiens les résultats suivants

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

El .libPaths que j'ai ajouté à la Rprofile.site ne semble pas avoir eu d'effet ! Pourquoi est-ce le cas ? Ou, plus important encore, comment puis-je résoudre le problème afin de pouvoir installer et charger des paquets sans avoir à saisir l'emplacement de la bibliothèque ?

Remarque : si je lance RStudio, l'option .libPaths() La commande semble fonctionner comme elle est censée le faire

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

N'est-ce pas étrange ?

283voto

gorkypl Points 358

La bonne solution consiste à définir la variable d'environnement R_LIBS_USER à la valeur du chemin d'accès au dossier de la bibliothèque de votre choix, plutôt que de demander à RStudio de reconnaître un fichier Rprofile.site.

Pour définir la variable d'environnement R_LIBS_USER sous Windows, allez dans le Panneau de configuration (Propriétés du système -> Propriétés avancées du système -> Variables d'environnement -> Variables utilisateur) à une valeur souhaitée (le chemin d'accès à votre dossier de bibliothèque), par ex.

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

Si, pour une raison quelconque, vous n'avez pas accès au panneau de contrôle, vous pouvez essayer d'exécuter rundll32 sysdm.cpl,EditEnvironmentVariables à partir de la ligne de commande sous Windows et ajoutez la variable d'environnement à partir de là.

La définition de R_LIBS_USER garantira que la bibliothèque apparaîtra en premier dans .libPaths() indépendamment du démarrage de RStudio directement ou en cliquant avec le bouton droit de la souris sur un fichier et en choisissant "Ouvrir avec" pour démarrer RStudio.

La solution Rprofile peut fonctionner si RStudio est toujours lancé en cliquant sur le raccourci RStudio. Dans ce cas, définir le répertoire de travail par défaut comme étant le répertoire qui abrite votre profil R sera suffisant. La solution Rprofile ne fonctionne pas lorsque vous cliquez sur un fichier pour lancer RStudio, car cela modifie le répertoire de travail par rapport au répertoire de travail par défaut.

212voto

BondedDust Points 105234

J'essaie généralement de garder tous mes paquets dans une seule bibliothèque, mais si vous voulez ajouter une bibliothèque, pourquoi ne pas ajouter la nouvelle bibliothèque (qui doit déjà exister dans votre système de fichiers) au chemin de la bibliothèque existante ?

.libPaths( c( .libPaths(), "~/userLibrary") )
 # obviously this would need to be a valid file directory in your OS
 # min just happened to be on a Mac that day

Ou (et cela fera de la userLibrary le premier endroit où placer les nouveaux paquets) :

.libPaths( c( "~/userLibrary" , .libPaths() ) )

Ensuite, je reçois (du moins à l'époque où j'ai écrit ceci à l'origine) :

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"  

El .libPaths est un peu différente de la plupart des autres fonctions non graphiques. Elle fonctionne par effet de bord. Les fonctions Sys.getenv y Sys.setenv qui signalent et modifient les variables d'environnement R ont été séparées mais .libPaths peut soit signaler, soit modifier sa cible.

Les informations sur le processus de démarrage de R peuvent être lues à l'adresse suivante ?Startup et il y a du matériel RStudio à la page d'aide : https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

Dans votre cas, il semble que RStudio ne respecte pas les paramètres de Rprofile.site ou qu'il les remplace en lisant un paramètre .Rprofile à partir de l'un des paramètres par défaut de RStudio. Il convient également de mentionner que le résultat de cette opération ajoute également le contenu des appels à .Library y .Library.site C'est une raison supplémentaire pour laquelle un R hébergé par RStudio (ou tout autre IDE ou réseau installé) peut présenter un comportement différent.

Depuis Sys.getenv() retourne l'environnement système actuel pour le processus R, vous pouvez voir la bibliothèque et les autres chemins avec :

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

Les deux qui comptent pour le stockage et l'accès aux paquets sont (maintenant différents sur une boîte Linux) :

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/

27voto

I Like to Code Points 460

J'ai réussi à résoudre le problème en plaçant le code dans le fichier .Rprofile dans le répertoire de travail par défaut.

Tout d'abord, j'ai trouvé l'emplacement du répertoire de travail par défaut

> getwd()
[1] "C:/Users/me/Documents"

Puis j'ai utilisé un éditeur de texte pour écrire un simple .Rprofile avec la ligne suivante

.libPaths("C:/software/Rpackages")

Enfin, quand je commence R et exécuter .libPaths() J'obtiens le résultat souhaité :

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"

24voto

bowen.li Points 439

11voto

Whalen Points 121

J'ai trouvé ce que je pense être une solution aquí (merci Carl Schwarz à SFU) pour avoir ajouté une bibliothèque personnelle qui est reconnue en permanence (vous n'avez pas besoin de la définir à chaque session) que vous utilisiez R ou Rstudio, et Rstudio la traite comme la bibliothèque par défaut sur ma machine Mac. Je ne l'avais pas vu présenté aussi explicitement sur SO, donc j'ai résumé les étapes qu'ils ont fournies, pour Windows et ensuite pour Mac.

Pour un système d'exploitation Windows 7 :

  1. Créez un répertoire sur le lecteur où vous voulez avoir votre bibliothèque personnelle, par exemple C:\User\Rlibs (ou un autre pour lequel vous avez des permissions)

  2. Recherchez/allez à "Modifier la variable d'environnement pour votre compte" dans la barre de recherche de Windows pour modifier les paramètres du panneau de configuration.

  3. Cliquez sur "Nouveau..." au milieu de la fenêtre "Variables d'environnement".

  4. Dans la fenêtre "New User Variable", tapez R_LIBS pour le "Nom de variable", et le chemin d'accès au répertoire de la bibliothèque personnelle que vous avez créé, par exemple C:\User\Rlibs

  5. Cliquez sur OK et vous devriez voir la paire Variable/Valeur dans la fenêtre Variables utilisateur.

  6. Cliquez à nouveau sur OK

Maintenant, lorsque vous lancez R (ou Rstudio) et tapez la commande .libPaths() vous devriez voir la bibliothèque personnelle que vous avez créée ainsi que la bibliothèque du système R.

Pour Mac :

  1. Dans votre répertoire "Home" ou "username", créez un dossier appelé Rlibs

  2. Lancez l'application Terminal

  3. Type : echo "R_LIBS=~/Rlibs"> .Renvrion Assurez-vous que le cas correspond.

  4. Type ls -a pour voir la liste complète des fichiers dans le répertoire, qui devrait maintenant inclure Renvoi

  5. Vérifiez que le Renviron a été défini correctement : more .Renviron

Lancez R/Rstudio et tapez .libPaths() et vous devriez voir le nouveau chemin vers votre bibliothèque personnelle.

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