Chapitre 1 Bien commencer
1.1 Créer un projet sous Rstudio pour vous permettre de recenser vos travaux.
Pourquoi travailler avec les projets Rstudio plutôt que les scripts R ?
- Cela permet la portabilité : le répertoire de travail par défaut d’un projet est le répertoire où est ce projet. Si vous transmettez celui-ci à un collègue, le fait de lancer un programme ne dépend pas de l’arborescence de votre machine.
Fini les
setwd("chemin/qui/marche/uniquement/sur/mon/poste")
!
- Toujours sur la portabilité, un projet peut être utilisé avec un outil comme
renv
qui va vous intégrer en interne au projet l’ensemble des packages nécessaires au projet. Cela permet donc à votre collègue à qui vous passez votre projet de ne pas avoir à les installer et, surtout, si vous mettez à jour votre environnement R, votre projet restera toujours avec les versions des packages avec lesquelles vous avez fait tourner votre projet à l’époque. Cela évite d’avoir à subir les effets d’une mise à jour importante d’un package qui casserait votre code.
Pour activer renv
sur un projet, il faut l’installer avec install.packages("renv")
.
Pour intialiser la sauvegarde des packages employés dans le projet, il faut utiliser
renv::init()
Les packages chargés dans le projet sont enregistrés dans un sous-dossier dédié.
En cours de travail sur le projet, la commande renv::snapshot()
permet de faire une sauvegarde, la commande renv::restore()
permet de charger la dernière sauvegarde.
Cela permet de se forcer à travailler en mode projet : on intègre à un seul endroit tout ce qui est lié à un projet : données brutes, données retravaillées, scripts, illustrations, documentations, publications… et donc y compris les packages avec
renv
.On peut travailler sur plusieurs projets en même temps, Rstudio ouvre autant de sessions que de projets dans ce cas.
Les projets Rstudio intègrent une interface avec les outils de gestion de version Git et SVN. Cela veut dire que vous pouvez versionner votre projet et l’héberger simplement comme répertoire sur des plateformes de gestion de code telle que Github ou Gitlab.
Pour créer un projet :
- Cliquez sur Project en haut à droite puis New Project.
- Cliquez sur New Directory.
1.2 Utilisation du package {savoirfR}
Pour faciliter le déroulé de ce module, l’ensemble des exercices (énoncés, corrigés et données) a été intégré à un package réalisé par le groupe des référents R : {savoirfR}
install.packages('remotes')
::install_github("MTES-MCT/savoirfR") remotes
Pour l’utiliser, il suffit de créer un nouveau projet dans un nouveau répertoire, en sélectionnant le “Project Type” Exercice Parcours R MTES-MCT.
Remplissez et sélectionnez le module suivi.
1.3 Créer votre arborescence de projet
Créer un répertoire
/src
où vous mettrez vos scripts R.Créer un répertoire
/figures
où vous mettrez vos illustrations issues de R.
1.4 Activer les packages nécessaires
Commencez par rajouter un script dans le répertoire /src
à votre projet qui commencera par :
activez l’ensemble des packages nécessaires,
chargez les données dont vous aurez besoin.
# remotes::install_github("joelgombin/banR")
library(banR)
# remotes::install_github("antuki/CARTElette/CARTElette@RPackage")
library(CARTElette)
library(cartogram)
# remotes::install_github("MaelTheuliere/COGiter")
library(COGiter)
library(cowplot)
# remotes::install_gitlab('dreal-pdl/csd/datalibaba', host = "gitlab-forge.din.developpement-durable.gouv.fr")
library(datalibaba)
library(DT)
library(ggiraph)
library(ggspatial)
library(glue)
# remotes::install_github("spyrales/gouvdown")
library(gouvdown)
# remotes::install_github("spyrales/gouvdown.fonts")
library(gouvdown.fonts)
library(htmltools)
library(htmlwidgets)
library(jsonlite)
library(kableExtra)
library(knitr)
library(leaflet)
library(lubridate)
# remotes::install_gitlab('dreal-pdl/csd/mapfactory', host = "gitlab-forge.din.developpement-durable.gouv.fr")
library(mapfactory)
library(mapview)
library(osmdata)
library(osmextract)
library(osrm)
library(rmapshaper)
library(RPostgres)
library(savoirfR)
library(scales)
library(sf)
library(spData)
library(tidyverse) # comprend ggplot2, stringr, purrr, readr, httr
library(tmap)
library(tmaptools)
# remotes::install_github("MaelTheuliere/variousdata")
library(variousdata)
library(viridis)
load("extdata/admin_express.RData")
load("extdata/sirene.RData")
<- read_csv2("extdata/prefecture.csv") prefectures
1.5 Bien structurer ses projets data
Plusieurs documents peuvent vous inspirer sur la structuration de vos projets data par la suite.
En voici quelques uns :
- https://github.com/pavopax/new-project-template
- https://nicercode.github.io/blog/2013-04-05-projects/
- https://www.inwt-statistics.com/read-blog/a-meaningful-file-structure-for-r-projects.html
- http://projecttemplate.net/architecture.html
A partir du moment où quelques grands principes sont respectés (un répertoire pour les données brutes en lecture seule par exemple), le reste est surtout une question d’attirance plus forte pour l’une ou l’autre solution. L’important est de vous tenir ensuite à garder toujours la même structure dans vos projets afin de vous y retrouver plus simplement.