help("Startup")
31 Personnaliser la configuration de R
L’agent souhaite personnaliser sa configuration de R
. Cette personnalisation consiste à définir certaines actions ou valeurs qui seront effectuées automatiquement à l’ouverture d’une session R
.
31.1 Comprendre le lancement de R
31.1.1 Vue d’ensemble de l’initialisation de R
Dès ses origines, R
a été conçu pour offrir une grande souplesse d’utilisation. Cette souplesse engendre toutefois une complexité dans les procédures d’initialisation de R
. La documentation sur le lancement de R
montre d’ailleurs toute la complexité de la chose :
De façon simplifiée, la procédure d’initialisation de R
se déroule en trois temps :
R cherche des fichiers de type environment. Ces fichiers permettent notamment d’indiquer des chemins spécifiques où se trouvent d’autres fichiers, ou certaines caractéristiques comme le proxy.
R
cherche des fichiers de type profile. Ces fichiers contiennent du codeR
qui se lance automatiquement au démarrage deR
. Ils permettent par exemple d’indiquer des packages supplémentaires à charger, de personnaliser le message d’accueil deR
, ou de sauvegarder automatiquement les informations de la session lorsqu’on la quitte.R
prépare l’ouverture de la session avecR
, avec les informations récupérées précédemment dans les fichiers environment et profile, et d’autres informations, comme par exemple les données qui ont pu être conservées dans un.Rdata
.R
charge les packages de base (installés avecR
), avant de charger l’historique des commandes (s’il en existe un). C’est lors de ce dernier temps queR
peut charger les données et l’historique après s’être interrompu inopinément.
Enfin, il existe d’autres fichiers comme le .Rhistory
qui contient l’historique des commandes, notamment celles réalisées à la console. Ce fichier peut également contenir des informations sensibles, il est donc rare de le partager, mais il est possible de le conserver.
31.1.2 Configuration générale et configuration par projet
Il est possible de personnaliser votre configuration de R
en définissant des fichiers environment et profile. Ces fichiers peuvent être définis à deux niveaux qu’il faut bien distinguer :
- la configuration générale de
R
, qui s’applique à toutes les sessionsR
que vous ouvrez. Dans ce cas, les fichiers de configuration doivent être placés dans le répertoireHome
. Vous pouvez récupérer le chemin de ce répertoire en exécutant la commandeSys.getenv("HOME")
(sous Windows, typiquement Mes documents). - la configuration spécifique à un
Rproject
(projetRStudio
), qui s’applique uniquement lorsque vous travaillez sur ce projet. Dans ce cas, les fichiers de configuration doivent être placés dans le répertoire duRproject
auquel ils s’appliquent.
Définir des fichiers environment et profile spécifiques à un Rproject
s’avère très utile lorsque les projets sur lesquels vous travaillez requièrent des configurations de R
différentes.
Un point essentiel est qu’une session R
ne charge qu’un seul fichier environment et un seul fichier profile. Les fichiers de configurations sont chargés par ordre de spécificité décroissant :
- les fichiers présents dans le répertoire d’un
Rproject
sont prioritaires ; - à défaut, les fichiers présents dans le répertoire
Home
; - à défaut, les fichiers présents dans le répertoire d’installation de
R
.
Ajouter un fichier environment dans le répertoire d’un Rproject
aura donc pour conséquence que l’éventuel fichier environment présent dans le répertoire Home
ne sera pas chargé par la session R
lorsque vous travaillerez sur ce projet.
31.2 Personnaliser sa configuration
31.2.1 Le fichier .Renviron
Le fichier d’environnement .Renviron
sert à définir des variables d’environnement. Ces variables sont utiles pour R
lui-même ou pour les interactions entre R
et d’autres logiciels. Ces variables d’environnement peuvent également modifier la manière dont R
réalise certaines opérations.
Par exemple, un .Renviron
fictif pourrait ressembler à ceci :
MON_API_INSEE=MaCleSecreteVraimentTresSecrete
http_proxy=le_proxy
https_proxy=le_proxy
_R_CHECK_LENGTH_1_LOGIC2_=verbose
_R_CHECK_LENGTH_1_CONDITION_=true
Un tel fichier n’est pas constitué de code R
, mais de paires nom=valeur. Chaque paire définit une variable d’environnement qui sera exploitée par R
pour interagir avec d’autres logiciels, ou directement pour lui. Ce fichier fictif réalise les opérations suivantes :
- il définit la clé d’API dans une variable MON_API_INSEE. Ultérieurement, un script
R
pourra faire appel à cette variable via la commandeSys.getenv("MON_API_INSEE")
. De cette façon, la clé confidentielle n’est pas directement visible dans le scriptR
, et ce script peut être partagé en toute sécurité ; - il modifie les paramètres du proxy pour permettre à
R
de se connecter à Internet ; - il modifie des variables internes à
R
(telles que_R_CHECK_LENGTH_1_CONDITION_
et_R_CHECK_LENGTH_1_LOGIC2_
) ; - il contient une ligne vide finale : cette ligne vide est indispensable, ne l’oubliez jamais !
La méthode la plus simple pour modifier le fichier .Renviron
est la suivante :
- Ouvrir le fichier
.Renviron
. La commandeusethis::edit_r_environ()
permet d’ouvrir le fichier.Renviron
de votre profil utilisateur (c’est le fichier d’environnement utilisé lorsqu’il n’y a pas de fichier d’environnement à votre projet). Si vous travaillez dans unRProject
, la commandeusethis::edit_r_environ(scope = "project")
permet d’ouvrir le le fichier.Renviron
spécifique à votre projet. - Modifier le fichier, sans oublier la ligne vide en fin de document.
- Sauvegarder le fichier.
- Relancer
R
, viaSession > Restart R
ou Ctrl + ⇧ Shift + F10 dansRStudio
.
Il est possible de modifier les paramètres de son environnement ou d’en générer d’autres après l’ouverture de la session R
, avec la commande Sys.setenv()
. Vous pouvez par exemple exécuter la commande Sys.setenv("MON_API_INSEE"="jamais")
. De même, la fonction Sys.getenv()
permet de lister certaines valeurs présentes dans l’environnement actuel. Toutefois, toutes les procédures d’initialisation de R se seront déjà déroulées alors avec les anciennes valeurs, définies par défaut. Cette subtilité peut être importante !
31.2.2 Le fichier .Rprofile
Le fichier .RProfile
contient du code R
qui sera exécuté par R
après le chargement des fichiers .Renviron
. Voici trois utilisations standards du fichier .Rprofile
:
- modifier le miroir par défaut du CRAN (pour télécharger des packages) ;
- modifier le message d’accueil de la session ;
- personnaliser l’affichage de
R
.
Un fichier .Rprofile
peut par exemple ressembler à ceci :
options(repos = c(CRAN = "https://cran.rstudio.org"))
options(prompt="R> ", digits=4)
options(continue= "+++ ")
if (interactive()) {
options(width = 120)
}
.First <- function(){
cat("\n Allez, hop hop hop, au travail !\n\n")
}
.Last <- function(){
cat("\n Je m'en vais comme un prince...\n\n")
}
Ce fichier .Rprofile
permet de :
- définir un miroir par défaut pour le CRAN ;
- modifier l’affichage de l’invite de commande (le “>” de début de ligne devient “R>”) ;
- modifier l’affichage par défaut des nombres décimaux ;
- modifier l’affichage de la console lorsqu’une partie du code reste à écrire (le “+” en début de ligne devient “+++”) ;
- dans le cadre d’un appel à la console, la largeur des impressions est fixée à 120 ;
- les fonctions
.First
et.Last
permettent d’effectuer des opérations spécifiques au lancement et à la fermeture de la session R (imprimer du texte dans le cas présent) ; - Attention, comme précédemment, un fichier
.Rprofile
doit impérativement se terminer par une ligne vierge.
La fonction options()
affiche les valeurs actuellement chargées pour les options. Il est possible de les modifier à la volée avec la commande options(nom_de_l_option = valeur_de_l_option)
. Attention toutefois, modifier une option avec la fonction options()
n’est valable que pour la session de R
actuellement active ! Si R
redémarre, toutes les options modifiées à la volée ne sont plus prises en compte. Si vous voulez modifier durablement la valeur d’une option, il est préférable de modifier le fichier .Rprofile
.
Un exemple plus réaliste de .Rprofile
peut être trouvé ici : c’est le fichier qui permet notamment de réaliser la documentation utilitR
. Notez notamment le message à l’ouverture du projet. Avoir des fonctions n’est pas forcément interdit, tant que ces fonctions sont également partagées, comme c’est le cas dans ce projet !
31.3 Quelques bonnes pratiques
La personnalisation de R
est une opération sensible qui ne doit pas interférer avec l’exigence de reproductibilité des travaux statistiques. Cette personnalisation doit donc porter uniquement sur des modifications sans impact sur les calculs et sur des informations ayant vocation à ne pas être diffusées. Ces informations à ne pas diffuser peuvent être de deux types :
- informations sensibles (comme les identifiants d’API ou les paramètres de proxy). Il est important que ces informations ne figurent pas dans les programmes de façon à pouvoir partager librement les codes ;
- informations d’infrastructure (comme les chemins vers des exécutables). Ces informations n’ont pas vocation à être partagées, car elles varient d’un poste d’un agent à l’autre.
Les autres opérations modifiant le comportement de base (comme options(stringsAsFactors = FALSE)
) doivent être partagées et accessibles, via le fichier .Rprofile
. Pour information, depuis R
version 4.0, la valeur de stringsAsFactors
est FALSE
par défaut, alors qu’elle était TRUE
pour les versions antérieures.
31.4 Pour en savoir plus
L’immense majorité de la documentation sur l’utilisation des fichiers de configuration de R
est en langue anglaise :
-
Using
.Rprofile
and .Renviron
par Nicholas Tierney ; - R Startup, chapitre 7 de Rstats - What they forgot to teach you, par Jennifer Bryan er Jim Hester ;
-
Managing
R
with.Rprofile
,.Renviron
,Rprofile.site
,Renviron.site
,rsession.conf
, andrepos.conf
par Alex Gold ; -
Efficient
R
Programing - chapter 2.5 par Colin Gillespie & Robin Lovelace ; -
R
for Enterprise: Understanding R’s Startup par Sean Lopp (RStudio).