class: center, middle, inverse, title-slide .title[ # Bien s’organiser ] .subtitle[ ## .doana-title[
] ] .author[ ### DoAna - Statistiques Réunion ] .date[ ### 2024 ] --- layout: true .my-footer[![](img/logoDoAna.png) .footer-title[Bien s'organiser]] --- class: inverse, center, middle ## *Une place pour chaque chose et chaque chose à sa place.* Samuel Smiles - 1859 --- background-image: url(img/05-s-organiser_desordre1.jpg) background-size: cover class: inverse ??? source : https://github.com/datacarpentry/rr-organization1/blob/27883c8fc4cdd4dcc6a8232f1fe5c726e96708a0/slides/organization-slides/organization-slides.pdf --- background-image: url(img/05-s-organiser_desordre2.jpg) background-size: cover class: inverse ??? il faut regarder la vérité en face, il va y avoir beaucoup de fichiers... source : https://github.com/datacarpentry/rr-organization1/blob/27883c8fc4cdd4dcc6a8232f1fe5c726e96708a0/slides/organization-slides/organization-slides.pdf --- name: plan ## Sommaire *** 1) Le répertoire de travail - Unité de travail - Organisation des fichiers - Les noms des fichiers - Le R-projet - Trouver le bon chemin - Récupérer plusieurs fichiers 2) Gérer et organiser un script - Créer des sections - Rendre son code lisible - Un mot sur l'encodage 3) Mémo des R-accourcis clavier --- class: inverse, center, middle # Le répertoire de travail ## siège de votre projet --- ## Unité de travail *** .height400[![](img/05-s-organiser_lechat-bordel.jpg)] -- > **Répertoire de travail** = *working directory* = dossier qui se trouve dans votre ordinateur, assimilable à une unité de travail et dont le contenu se suffit à lui-même. ??? - Avant de foncer tête baissée dans l’écriture (ou le copier-coller) frénétique de lignes de code, il est important de prendre 10 minutes pour travailler correctement, efficacement et proprement. - bien définir le projet, plusieurs expé parallèles en sont elles un ou plusieurs ? --- ## Organisation des fichiers *** .pull-left[ > Objectif : Rendre explicites et intuitifs la localisation et le nom des fichiers. **Avantages** : - pour soi-même dans le futur - pour travailler avec les autres ] -- .pull-right[ ![](img/05-s-organiser_cycle-donnees.png) ] --- ## Organisation des fichiers *** .pull-left[ > Objectif : Rendre explicites et intuitifs la localisation et le nom des fichiers. **Avantages** : - pour soi-même dans le futur - pour travailler avec les autres ] .pull-right[ ``` r █ ├─donnees │ ├─donnees brutes │ └─donnees propres ├─scripts │ ├─ranger │ └─analyser ├─sauvegardes ├─figures │ ├─graphiques │ └─tables └─documents ├─bibliographie ├─poster ├─présentation ├─rapport └─papier ``` ] ??? - montrer exemple dans mon ordinateur - exception `.Rmd` à la racine du répertoire de travail - on a le droit d'avoir un dossier : "à trier" ou "de François" qui ne respecte pas ! - on s'améliore sans cesse --- ## Les noms des fichiers *** .pull-left[ ### NON - `monresume.docx` - `nom avec des espaces, de la ponctuation et des c@ractères spéciaux !.xslx` - `figure 1.png` - `fig2.png` - `JW7d^effacecaettacarriereestfoutueWx2.txt` ] -- .pull-right[ ### OUI - `2020-09-15_resume_SLA.docx` - `nom-qui-commence-a-aller-sacrement-mieux.xslx` - `fig01_pres-longueur-vs-date.png` - `fig02_pres-histogramme-taille.png` - `1997-05-21_donnees-brutes-de-la-reine-d-Angleterre.txt` ] ??? - c'est quoi le problème ? - inconsitance et contenu inconnu --- ## Les noms des fichiers *** ### Machine readable - expression régulière (éviter les accents, attention au majuscules) - utiliser les délimiteurs `"_"` (sépare les groupes d'info) et `"-"` (empêche les yeux de saigner) - pour : réduire une liste de fichier, récupérer de l'info dans les noms des fichiers, chercher facilement un fichier plus tard, utiliser la complétion de R... --- name: noms ## Les noms des fichiers *** .pull-left[ ### Human readable - donner une information sur le contenu - penser aux URL des sites internet (*slug*) ] .pull-right[ ![](img/05-s-organiser_human-readable.png) Vous préférez quoi à 3h du mat avant une dealine ? ] --- name: noms ## Les noms des fichiers *** .pull-left[ ### Utiliser le rangement par défaut - mettre un nombre en premier (ordre logique) - ajouter des `0` devant les nombres < 10 sinon : - 10_figures-pour-publication.R - 1_nettoyage-donnees.R - 2_modele.R - utiliser ISO 8601 pour les dates (ordre chronologique) ] .pull-right[ ![](img/05-s-organiser_xkcd-iso-8601.png) ] ??? sources : - https://github.com/datacarpentry/rr-organization1/blob/27883c8fc4cdd4dcc6a8232f1fe5c726e96708a0/slides/naming-slides/naming-slides.pdf - https://xkcd.com/1179/ --- ## Le R-projet *** ``` r # Où suis-je ? Dans quel état j'erre ? getwd() ``` -- Créer un projet... ![](img/05-s-organiser_create-project.png) ... pour pouvoir écrire les chemins relatifs ! -- <br> ![](img/05-s-organiser_WD.png) -- <br> > Maintenant on peut ouvrir RStudio *au bon endroit* par le .Rproj ??? - on ne se sert pas de `getwd()`, on regarde en haut de RStudio ! - creation de rproj à tester en live --- ## Trouver le bon chemin *** ### Chemin absolu ``` r getwd() ## "/home/doizy/documents/" read_csv("/home/doizy/documents/chemin-relou/donnees/super-base.csv") ``` -- ### Chemin relatif ``` r getwd() ## "/home/doizy/documents/chemin-relou" read_csv("donnees/super-base.csv") ``` ??? Ecrire un chemin relatif avec la complétion --- ## Récupérer plusieurs fichiers *** ``` r # Que contient le sous-dossier donnees ? dir("donnees") # Que contient le dossier au-dessus ? dir("..") # '..' permet de remonter d'un cran dans l'arborescence des répertoires ``` -- Faire une boucle sur plusieurs noms de fichiers ``` r jeux <- lapply(dir("donnees"), read_csv) # boucle : pour chaque élément du vecteur (X), appliquer la fonction (FUN), jeux est une liste bind_rows(jeux) ``` ??? Pour info, peut servir à importer plusieurs fichiers en boucle par exemple --- template: plan --- class: inverse, center, middle # Gérer et organiser un script ## pour limiter les envies de pleurer --- class: inverse, center, middle ## *Un script se suffit en lui-même quand on peut tout lancer d'un coup et dans l'ordre sans que ça énerve R.* Moi - objectif de vie depuis 2018 --- ## Créer des sections *** ![](img/05-s-organiser_plan-script.png) - Hiérarchiser l'écriture avec `####` ou `----` - Replier les sections - Exemple : voir plan-script.R ??? - Voir `plan-script.R` - raccourci section : `Ctrl + Maj + R` --- ## Rendre son code lisible... *** ### ... et autres bonnes pratiques - mettre des commentaires en privilégiant le "pourquoi" au "comment" -- - fond sombre qui ne pique pas les yeux - taille de police adaptée - retour à la ligne automatique (*soft-wrap*) -- - connaître la syntaxe recommandée (packages **styler** et **lintr**, article [*Tidy Data*](https://www.jstatsoft.org/article/view/v059i10) par Wickham) -- - faire calculer à R tout ce qu'il peut calculer (adaptabilité face aux changements) -- <br> > Allons configurer RStudio : Tools > Global options... ??? calcul : exemple un calcul qui nécessite le nombre d'individu, on met `nrow()`, pas `10`. --- ## Un mot sur l'encodage... *** ### ... pour gérer les caractères spéciaux -- .pull-left[ #### Scripts > File > Reopen with encoding... **AVANT** d'enregistrer des modifications <!-- ```{r} --> <!-- # Pour sécuriser les légendes de graphiques (vraiment facultatif) --> <!-- stringi::stri_escape_unicode("é") --> <!-- ``` --> ] -- .pull-right[ #### Fichier de données ``` r read_tsv( "donnees/sols.txt", locale = locale( # encoding = "ISO-8859-1" # langue de Windows - Europe de l'Ouest encoding = "UTF-8" # langue de Linux et Mac ) ) ``` ] --- template: plan --- class: inverse, center, middle # Mémo des R-accourcis clavier de RStudio --- <small> |Commande |Résultat | |:-------------------------------------|:-----------------------------------------------------------------------------------| |`Ctrl + Entrée` |Envoie le code sélectionné dans la console | |`Ctrl + Z` |Annule la dernière action | |`Ctrl + S` |Enregistre le script | |`Ctrl + Maj + K` |Enregistre et compile (Render) le rapport | |`Ctrl + X`, `Ctrl + C`, `Ctrl + V` |Coupe, copie, colle le texte sélectionné | |`Ctrl + Maj + M` |Ecrit |> | |`Ctrl + Maj + C` |Commente ou dé-commente la sélection en cours | |`F1` |Présente la page d'aide de la fonction sur laquelle le curseur est positionné | |`Tabulation` |Force la complétion (nom des fonctions ou chemin relatif) | |Double clic sur un mot |Sélectionne le mot en question | |`"` sur un mot sélectionné |Met le mot sélectionné entre guillemets | |Flèches haut et bas (dans la console) |Récupère les commandes précédemment lancées dans la console | |`Echap` (dans la console) |Arrête le processus en cours ou efface la ligne de commande écrite dans la console | |`Ctrl + Maj + chiffre` |Agrandit/redimensionne la fenêtre du script (`1`), de la console (`2`), etc. | |`Ctrl + Maj + F10` |Redémarre la session R (efface l'environnement et enlève tous les packages chargés) | |`Alt + Maj + K` |Affiche les raccourcis de Rstudio | </small> --- class: inverse, bottom, center ### Ranger ne vous fait plus peur ! -- -- -- ### ☺ -- -- -- [Accueil](/)