class: center, middle, inverse, title-slide # Démarrer sous RStudio ## .doana-title[
] ### DoAna - Statistiques Réunion ### 2020 --- layout: true .my-footer[![](img/logoDoAna.png) .footer-title[Démarrer sous RStudio]] --- name: plan ## Sommaire *** 1) R - Qu'est-ce que R ? - Historique - Les objets - Quelques grands principes - Avantages de R 2) RStudio - Qu'est-ce que RStudio ? - Apparté sur les sauvegardes - Avantages de RStudio 3) Les packages - Organisation des fonctions existantes - Stockage - Mise à jour --- class: inverse, center, middle # R ## la programmation pour les jeux de données --- ## Qu'est-ce que .inlineimg[![](img/logoR.png)] ? *** -- ### Langage Langage de programmation basé sur le langage **S** - Langage interprété (utilisation de scripts) - Programmation **procédurale** (utilisation de fonctions) et, avec certaines fonctions, programmation **orientée-objet** -- ### Logiciel Logiciel qui interprète les commandes rédigées en R - Interface graphique → console (terminal de commandes) -- > Ouvrez R seul ! ??? Sert à manipuler, visualiser, analyser des jeux de données Exercice : - lancer quelques commandes - découvrir le `>` et le `+` --- ## Historique *** - 1993 : inspiration du langage S, projet de recherche (Ross Ihaka et Robert Gentleman) au département Statistiques de l'université d'Auckland (Nouvelle-Zélande) - 1997 : *R Core Team*, équipe responsable du code source - avril 1997 : centralisation de toutes les informations sur R via le CRAN (*comprehensive R Archive network*) sur [R-project.org](https://cran.r-project.org/) - décembre 1997 : intégration au projet GNU, code open-source - février 2000 : première sortie officielle, `R 1.0` ! --- ## Les objets *** > **Tout** est objet dans R ! -- |Objet |Nom |Détail | |:----------------|:------------|:-------------------------------------| |Vecteur atomique |`vector` |Objet élémentaire | |Matrice |`matrix` |Extention des vecteurs à 2 dimensions | |Facteur |`factor` |Variables qualitatives | |Liste |`list` |Sac fourre-tout | |Jeu de données |`data.frame` |Cas particulier de liste | |Fonction |`function` |Objet d'action | ??? vecteur : abus de langage car comprends techniquement les listes --- name: principes ## Quelques grands principes *** {{content}} --- template: principes ### Utilisation des fonctions - Pour qu'il se passe quelque chose dans R -- ```r __________ | | input -> | function | -> output |__________| ``` ??? pas d'input : `q() ` pas de sortie (*side effect*) : les fonctions graphiques ou d'export d'un fichier à l'extérieur de R --- template: principes ### Utilisation des fonctions - Trois manières de les utiliser : ```r factorial ## function (x) ## gamma(x + 1) ## <bytecode: 0x5574f56cd170> ## <environment: namespace:base> ``` -- ```r factorial(4) ## [1] 24 ``` -- ```r ?factorial ``` --- template: principes ### Affectation Pointer la sortie d'une commande vers un nom (un objet nouveau ou existant), afin de pouvoir la réutiliser facilement : `est_ce <- "utile ?"`. -- **Exercice :** Choisissez ce qui est syntaxiquement correct : 1. `ananas <- 5` 1. `ananas = 5` 1. `5 -> ananas` 1. <code>\`5\` <- "ananas"</code> 1. `5 <- "ananas"` 1. `ananas <- "5"` ??? Réponse : tout sauf `5 <- "ananas"` Préférer : `ananas <- 5` et `ananas <- "5"` --- template: principes ### Indexation Extraire une partie des éléments d'un objet par leurs positions, leurs noms ou grâce à une question. -- Exemples écrits en français : - Position : je veux le premier et le dernier élément - Noms : dans un tableau, je veux la colonne `hauteur` et la colonne `identifiant` - Question : je veux sélectionner tous les individus qui ont les yeux marrons et qui ont moins de 30 ans ??? On s'entrainera à écrire cela en R plus tard --- template: principes ### Vectorisation Privilégier le calcul *"vectoriel"* au calcul itératif (boucles) car gain en temps de calcul et allègement de l'écriture. ```r _ __________ _ | | | | | | |v| -> | function | -> |v| |_| |__________| |_| ``` -- **Exercice :** Choisissez ce qui est correct. Dans R, un vecteur : 1. contient des éléments de nature différente 1. peut avoir une longueur de `0` 1. peut avoir une longueur de `1` 1. son premier élément est indexé par `0` ??? Réponses : 1. non, les éléments d'un vecteur sont tous de même nature 1. oui 1. oui 1. non, contrairement à d'autres langages, le premier élément est indexé par `1` --- ## Avantages de R *** - Logiciel de pointe en statistiques en évolution constante - Reproductibilité : le **chemin** est plus important que le résultat (contrairement à Excel par exemple) - Automatisation des tâches - Accès au code source - Gratuité - Communauté gigantesque (utilisateurs et développeurs) et réactive -- **MAIS** besoin d'un environnement de développement (interface graphique) ! --- template: plan --- class: inverse, center, middle # RStudio ## un environnement de développement dédié à R --- ## Qu'est-ce que .inlineimg[![](img/logoRstudio.png)] ? *** - **Environnement de développement** (*integrated development environment*) : augmentation de la productivité des programmeurs en automatisant une partie des activités et en simplifiant les opérations. - Développement par `RStudio, Inc.`, une entreprise commerciale fondée par Joseph J. Allaire. - Première version : février 2011, en développement actif - Gratuit, open-source, multiplateforme - Autres interfaces possibles : Emacs (éditeur de texte), tinnR (Windows), Jupyter (python), ... ??? Exercice : ouvrir RStudio --- background-image: url(img/02-demarrer_recette-rstudio.jpg) background-size: contain class: inverse --- ## Apparté sur les sauvegardes *** > Ménage automatique : à la fin de la session → comptoir vidé -- |Type |Cuisine |Contenu |Extention | |:-----------------|:--------|:--------------|:------------------| |**Source** |Recette |Lignes de code |`.R` | |**Environnement** |Comptoir |Objets R |`.Rdata` ou `.Rds` | -- Sauvegarde du **script** en priorité -- Les `.Rdata` pour : - charger plus rapidement des objets très lourds - transporter des objets intermédiaires entre deux scripts ??? - Les ustentiles retournent dans leurs placards Les plats et l'historique vont à la poubelle. Ce qui nous intéresse : pas les plats, mais la recette ! - Faire une démo --- ## Avantages de RStudio *** .pull-left[ - coloration syntaxique, complétion de code, intendation intelligente - excécution du code R directement depuis l'éditeur (source) - accès facilité à la documentation des fonctions - gestion de plusieurs répertoires de travail à l'aide de projets - utilisation d'extentions interactives (*addins*) ] -- .pull-right[ - contrôle de version (git) - débogueur interactif pour diagnostiquer les erreurs - tutoriel interactifs - outils de développement de packages - outils d'optimisation du temps de calcul - connexion à des bases de données externes - ... ] ??? On en découvre tous les jours ! --- template: plan --- class: inverse, center, middle # Les packages ## unités de développement --- ## Organisation des fonctions existantes *** Unité de regroupement des fonctions : le ***package***. Synonymes : plug-in, module d'extention, ... -- - R base : R version 4.0.3 (2020-10-10) est composé à l'installation de 0 packages - Pour accéder à de nouvelles fonctionnalités, nouveaux packages disponibles sur le CRAN Aujourd'hui (2021-02-11) : 17064 packages disponibles sur le CRAN -- **Exercice** : télécharger le tidyverse ??? nouvelles fonctionnalités = nouvel ustensile --- ## Stockage *** ### Où ? ```r .libPaths() ## [1] "/home/annadoizy/R/x86_64-pc-linux-gnu-library/4.0" ## [2] "/usr/lib/R/library" ``` -- ### Sous quel forme ? ![](img/02-demarrer_install-packages.png) ??? Exercice : regarder les libpaths de chacun Source : r-pkgs.org (figure coupée) --- ## Mise à jour *** Pourquoi mettre à jour ? -- **R base (tous les 6 mois)** Etapes recommandées : - installer la nouvelle version (sur [r-project.org](https://cran.r-project.org/)) - pour les mises à jour majeures (3.6.2 → 4.0.1) et mineures (4.0.1 → 4.1.0), déplacer les autres packages dans la bonne *library* - lancer `update.packages(checkBuilt=TRUE, ask=FALSE)` avec le nouveau R - désinstaller l'ancienne version de R (ça fait plus propre) -- **Les autres packages (dès qu'on utilise R)** Bouton inclu dans RStudio : .inlineimg[![](img/02-demarrer_update-packages.png)] -- **RStudio (tous les mois)** Allez sur [rstudio.com](https://rstudio.com/products/rstudio/download/#download) ??? Débuggage, nouvelles fonctionnalités, attention aux *breaking changes* Le modèle de casserole à maintenant une poignée plus ergonomique, on en rachète une nouvelle au magasin et on jète l'ancienne. --- class: inverse, bottom, center ### Maintenant vous connaissez la différence entre **R** et **RStudio** et entre *package* et *library* -- -- -- ### ☺ -- -- -- [Accueil](/)