64 votes

Comment charger automatiquement les paquets dans R ?

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

6 votes

Normalement, ce n'est pas une bonne idée car cela rend tout le code ultérieur de la session dépendant de votre configuration, alors que s'il contenait les appels de la bibliothèque, il serait plus autonome. Si vous essayez de partager votre code avec d'autres personnes, elles ne seront pas très contentes de vous car elles ne pourront pas exécuter vos scripts sans instructions supplémentaires.

1 votes

Vous pourriez définir un load_extra_packages() dans votre .Rprofile / Rprofile.site qui charge tous les paquets que vous voulez (et imprime leurs noms), puis exécutez cette commande au début de vos sessions - cela rendrait votre code transparent, voire complètement autonome...

79voto

Ben Bolker Points 50041

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

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

Si vous voulez un ensemble de paquets différent de ceux par défaut lorsque vous démarrage, insérez un appel à 'options' dans le fichier '.Rprofile' ou 'Rprofile.site'. ou 'Rprofile.site'. Par exemple, 'options(defaultPackages = character())' n'attachera aucun paquetage supplémentaire au démarrage (seulement le paquetage de base). paquetage de base) (ou définissez la variable d'environnement 'R_DEFAULT_PACKAGES=NULL' avant de lancer R). d'environnement avant de lancer R). En utilisant 'options(defaultPackages = "")' ou R_DEFAULT_PACKAGES=""' permet d'appliquer les règles de R système par défaut.

Puisque vous avez probablement faire vous voulez que tous les paquets par défaut soient chargés, puis des paquets supplémentaires (plutôt que, par exemple, de ne pas charger certains des 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 a ajouter vos paquets souhaités aux valeurs par défaut standard.

modifier (copié à partir d'un commentaire) pour que cela fonctionne en Rstudio : http://rstudio.org/docs/using/workspaces suggère que Rstudio exécute .Rprofile et ensuite "Effectue les autres actions décrites dans R Startup [ http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html ]" (ce qui est identique à ?Rprofile ). Il est ambigu de savoir s'il s'agit de Rprofile.site ou pas.

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

2 votes

+1 pour "parce que ?Rprofile est long et potentiellement intimidant". C'est cela, mais c'est aussi un livre terriblement compact. et pièce complète de la documentation. Lecture définitivement recommandée.

0 votes

Merci @Ben Bolker J'ai essayé d'ajouter cette ligne library(foo) dans le Rprofile.site et je n'obtiens pas ce que je veux. Que voulez-vous dire par foo ? Qu'est-ce que c'est ? Est-ce que c'est censé être le nom d'un paquet déterminé que je veux charger ?

4 votes

Désolé ; foo est une variable "placeholder" à l'ancienne. Par exemple, vous pouvez essayer library("ggplot2"); library("emdbook"); library("quantreg"); library("rms") (à titre d'exemples de paquets réels que vous pourriez vouloir inclure).

17voto

João Daniel Points 1893

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

Ce que vous devez faire, c'est ajouter library(package) à ce sujet. Si vous utilisez Unix, il se trouve probablement dans votre dossier personnel, sous forme de fichier caché.

10voto

Mikko Points 1825

Page Quick-R sur la personnalisation du démarrage de R contient essentiellement les mêmes informations que dans les réponses de Ben et Joao, mais elle est peut-être un peu plus claire. Créez une copie de Rprofile.site avec les modifications souhaitées dans votre dossier personnel (Documents sous Windows) et appelez-le comme suit .Rprofile

EDIT : J'ai remarqué que R 3.0.0 ne cherche plus dans le dossier Documents, mais utilise le répertoire personnel de l'utilisateur (nom d'utilisateur) sous Windows 7. Cela pourrait être un problème d'installation (c'est-à-dire que j'ai installé R "incorrectement" auparavant). Cependant, la page Quick-R dont le lien figure dans cette réponse indique la bonne façon de procéder. Si quelqu'un d'autre rencontre ce problème, la solution est de copier .Rprofile dans le répertoire personnel de l'utilisateur.

5voto

user23239 Points 151

La réponse rapide est que vous devez placer vos paquets R dans le répertoire .Rprofile comme tout le monde l'a suggéré.

Notez cependant que R lira ce fichier, et que puis chargez les paquets de base R . Voir de ?startup :

Notez que lorsque les fichiers de site et de profil utilisateur sont sourcés, seul le fichier paquet de base est chargé,

Cela peut poser des problèmes 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 vois deux solutions pour l'instant :

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

  2. Mettre à jour l'option Paquets par défaut : n'utilisez pas library() dans votre .Rprofile, mais quelque chose comme.

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

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