web-dev-qa-db-fra.com

Comment charger des paquets dans R automatiquement?

Pourriez-vous me suggérer un moyen de charger automatiquement les paquets dans R? Je veux dire, je veux démarrer une session dans R sans avoir besoin d'utiliser library('package name') plusieurs fois. Supposons que j'ai téléchargé tous les paquets que je veux utiliser la prochaine fois que je lance R.

51
Nestorghh

Mettez library(foo) dans votre fichier .Rprofile ou définissez R_DEFAULT_PACKAGES: voir ?Rprofile ...

En particulier (parce que ?Rprofile est long et potentiellement intimidant):

Si vous souhaitez utiliser un ensemble de packages différent de celui par défaut, insérez un appel à "options" dans le fichier ".Rprofile" ou "Rprofile.site". Par exemple, ‘options (defaultPackages = character ())’ n’attachera aucun package supplémentaire au démarrage (uniquement le package ‘base’) (ou définira ‘R_DEFAULT_PACKAGES = NULL’ comme variable d’environnement avant de lancer R). L’utilisation de ‘options (defaultPackages =" ")" ou de "R_DEFAULT_PACKAGES =" "" applique la valeur R système par défaut.

Puisque vous avez probablement do voulez charger tous les paquets par défaut, puis des paquets supplémentaires en plus (plutôt que, par exemple, de ne pas charger certains paquets par défaut), vous pouvez soit mettre

library("mypackage1")
library("mypackage2")
[etc.]

ou en utilisant options(defaultPackages=...):

options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))

dans votre .Rprofile to append vos paquets souhaités aux valeurs par défaut standard.

edit (copié du commentaire) pour que cela fonctionne dans Rstudio : http://rstudio.org/docs/using/workspaces suggère que Rstudio exécute .Rprofile puis "Effectue les autres actions décrites dans R Démarrage [ http://stat.ethz.ch/R-manual/R- patché/bibliothèque/base/html/Startup.html ] "(identique à ?Rprofile). Il est ambigu qu'il regarde Rprofile.site ou pas.

edit # 2 : selon le commentaire ci-dessous, cela fonctionne avec une version récente de Rstudio.

71
Ben Bolker

Il existe un fichier appelé .Rprofile qui n’est autre qu’un script à exécuter chaque fois que vous démarrez une nouvelle session de R.

Ce que vous devez faire, c'est y ajouter library(package). Si vous utilisez Unix, c'est probablement sur votre dossier de départ en tant que fichier caché.

15
João Daniel

La page Quick-R sur la personnalisation du démarrage R contient essentiellement les mêmes informations que dans les réponses de Ben et Joao, mais elles sont peut-être un peu plus claires. Créez une copie du fichier Rprofile.site avec les modifications souhaitées dans votre dossier de départ (Documents sous Windows) et appelez-le .Rprofile

EDIT: J'ai remarqué que R 3.0.0 ne se contente plus du dossier Documents, mais qu'il utilise le répertoire personnel de l'utilisateur (nom d'utilisateur) sous Windows 7. Il peut s'agir d'un problème d'installation (par exemple, l'installation R "à tort" précédemment). Cependant, la page Quick-R liée dans cette réponse indique la bonne façon de procéder. Si quelqu'un rencontre ce problème, la solution consiste à copier .Rprofile dans le répertoire de base de l'utilisateur.

8
Mikko

La réponse rapide est que vous devriez placer vos paquets R dans le fichier .Rprofile, comme tout le monde l’a suggéré. 

Notez cependant que R lira ce fichier et puis chargera les packages de base R. Voir de ? Startup :

Notez que lorsque les fichiers de profil de site et d’utilisateur sont générés uniquement, les fichiers le paquet de base est chargé,

Cela peut poser problème si le paquet que vous voulez charger améliore/écrase certaines fonctions de base de R. Voir par exemple avec tidyverse :: filter: https://github.com/tidyverse/dplyr/issues/1611

Je peux voir deux solutions jusqu'à présent:

  1. Utilisez .First.sys() sur la première ligne de votre fichier .Rprofile: il s'agit de la commande généralement exécutée après la lecture du fichier .Rprofile, qui charge les packages dans getOption("defaultPackages")

  2. Mettez à jour l'option defaultPackages: n'utilisez pas library() dans votre fichier .Rprofile, mais quelque chose comme.

    old <- getOption("defaultPackages")
    options(defaultPackages = c(old, "tidyverse"))
    
1
Matifou