class: center, middle, inverse, title-slide # Informatique : Introduction ## Licence 3 Economie-Gestion - Parcours Economie-Finance ### Ewen Gallic ### Aix-Marseille Université ### 2020-2021 (mise à jour: 2020-09-04) --- class: inverse, center, middle # Syllabus <br/><br/><br/> <div style='text-align: center;'> <img src = "images/intro/phd_comics_syllabus.gif" width = "500px" title = "http://www.phdcomics.com/comics.php?f=1583" /> <br/> <span class = "lien_source">Source : <a href = "http://www.phdcomics.com/comics.php?f=1583">http://www.phdcomics.com/comics.php?f=1583</a></span> </div> --- # Objectifs, horaires - *Objectifs* : * découvrir le langage et logiciel `R`, * apprendre les bases, * devenir autonome ; -- - *Horaire* : * 11 Séances de 2 heures ; * Mercredis (Groupes 2 et 3), Jeudis (Groupe 1) -- - *Évaluation* : * Contrôle continu (CC), * Contrôle terminal (CT) * `\(\text{NF} = (2*\text{CT} + \text{CC)}/3\)` --- ## Références (1) <table class = "table_ref"> <col width="30%"> <col width="70%"> <tr> <td><img class = "images_shadow" src="images/intro/goulet_2014.png" height="240px", title = "Introduction à la programmation en R" /></td> <td>Goulet, V. (2014). Introduction à la programmation en R</td> </tr> </table> <table class = "table_ref"> <col width="70%"> <col width="30%"> <tr> <td>Imai, K. (2018). Quantitative social science: An introduction. Princeton University Press.</td> <td><img class = "images_shadow" src="images/intro/imai_2017.jpg" height="240px", title = "Introduction à la programmation en R" /></td> </tr> </table> --- ## Références (2) <table class = "table_ref"> <col width="30%"> <col width="70%"> <tr> <td><img class = "images_shadow" src="images/intro/lafaye_2011.jpg" height="240px", title = "Le logiciel R : Maîtriser le langage - effectuer des analyses statistiques" /></td> <td>Lafaye de Micheaux, P., Drouilhet, R., & Liquet, B. (2011). Le logiciel R : Maîtriser le langage - effectuer des analyses statistiques. Springer.</td> </tr> </table> <table class = "table_ref"> <col width="70%"> <col width="30%"> <tr> <td>Paradis, E. (2002). R pour les débutants.</td> <td><img class = "images_shadow" src="images/intro/paradis_2002.png" height="240px", title = "R pour les débutants" /></td> </tr> </table> --- ## Références (3) <table class = "table_ref"> <col width="30%"> <col width="70%"> <tr> <td><img class = "images_shadow" src="images/intro/wickham_2009.jpg" height="250px", title = "ggplot2 : Elegant graphics for data analysis" /></td> <td>Wickham, H. (2009). ggplot2 : Elegant graphics for data analysis. Springer.</td> </tr> </table> <table class = "table_ref"> <col width="70%"> <col width="30%"> <tr> <td>Chang, W. (2013). R graphics cookbook. O’Reilly Media, Incorporated.</td> <td><img class = "images_shadow" src="images/intro/chang_2013.png" height="250px", title = "R graphics cookbook" /></td> </tr> </table> --- ## Références (4) <table class = "table_ref"> <col width="30%"> <col width="70%"> <tr> <td><img class = "images_shadow" src="images/intro/wickham_2018.jpg" height="250px", title = "R for data science" /></td> <td>Grolemund, G., & Wickham, H. (2018). R for data science.</td> </tr> </table> --- class: inverse, center, middle # Historique --- ## Historique (1) * Création de <b class = "coul_2">S</b> dans les années 1970 : * AT&T Bell Laboratories, * John Chambers, Douglas Bates, Rick Becker, Bill Cleveland, Trevor Hastie, Daryl Pregibon et Allan Wilks, * <b class = "coul_1">manipuler</b> les données, * effectuer des <b class = "coul_1">analyses statistiques</b>, * créer des <b class = "coul_1">graphiques</b> ; <div style='text-align: center;'> <img src = "images/intro/Rlogo.png" width = "300px" title = "http://www.r-project.org/" /> <br/> <span class = "lien_source">Source : <a href = "http://www.r-project.org/">http://www.r-project.org/</a></span> </div> --- ## Historique (2) - Création de <b class = "coul_2">R</b> dans le milieu des années 1990 : * département de Statistiques de l'Université d'Auckland, * Ross Ihaka et Robert Gentleman, * inspiré du S et de Scheme, * distribution sous les termes de la General Public Licence, * développement et distribution par la <b>R Development Core Team</b>, * ajouts par la <b class = "coul_1">communauté</b>. --- class: inverse, center, middle # Console, fenêtre de script --- - R est un langage <b class = coul_1>interprété</b> ; - donc pas de <b class = coul_1>compilation</b> ; - deux méthodes de travail : * dans la <b class = coul_2>console</b>, * dans une <b class = coul_2>fenêtre de script</b>. --- ## La console .pull-left[ - Écrire les expressions à la suite du symbole _prompt_ ("`>`") ; - Valider avec la touche `ENTREE` ; - Résultat également dans la console ] .pull-right[ ![Console sous Mac OS](images/intro/console_mac.png) ] --- ## Les fenêtres de script .pull-left[ - Écrire le code dans un fichier ; - Le soumettre à R ("`CTRL + R`", "`CTRL + ENTREE`", "`CMD + ENTREE`" selon la plateforme et l'éditeur). ] .pull-right[ ![Fenêtre de script](images/intro/fenetre_script.png) ] --- ## Mise en pratique 1. Écrire dans la console l'expression suivante, et valider : ```r > 2+1 ``` ``` ## [1] 3 ``` -- 2. En faire de même dans un fichier de script. --- class: inverse, center, middle # Variables <br/><br/><br/> <div style='text-align: center;'> <img src = "images/intro/a_serious_man.png" width = "600px" title = "A serious man" /> <br/> <span class = "lien_source">Source : <a href = "http://www.focusfeatures.com/a_serious_man">http://www.focusfeatures.com/a_serious_man</a></span> </div> --- ## Assignation - résultat d'une évaluation <b class = "coul_1">affiché</b> mais pas <b class = "coul_1">enregistré</b>; - conservation du résultat avec "`<-`"" ou "`->`"" ; - affichage du contenu d'une variable à l'aide de son nom. --- ## Assignation : exemples ```r x <- 2+1 x ``` ``` ## [1] 3 ``` ```r x^2 -> y y ``` ``` ## [1] 9 ``` --- ## Assignation - contenu non affiché lors de l'assignation ; ```r x <- 2+1 ``` - utilisation des <b class = "coul_1">parenthèses</b> pour forcer l'affichage du contenu. ```r (x <- 2+1) ``` ``` ## [1] 3 ``` --- ## Assignation - utilisation du symbole "`=`" autorisée ; - mais déconseillée par certain•e•s -- ## Conventions de nommage - caractères alphanumériques, trait de soulignement, point ; - ne doit pas commencer par un chiffre ; - ne doit pas contenir d'espace (sauf si entouré de guillemets) ; - sensibilité à la casse. -- Dans ce cours, la convention sera la suivante pour le nommage : - tout en minuscule ; - espaces remplacées par des traits de soulignement. --- ## Conventions de nommage : exemple ```r variable_1 <- 2+1 !variable_2 <- 3+1 ``` ``` ## Error in !variable_2 <- 3 + 1: objet 'variable_2' introuvable ``` ```r Variable_1 ``` ``` ## Error in eval(expr, envir, enclos): objet 'Variable_1' introuvable ``` ```r variable_1 ``` ``` ## [1] 3 ``` --- ## Objets en mémoire - les objets stockés en mémoire sont accessibles avec la fonction `ls()` ```r ls() ``` ``` ## [1] "variable_1" "x" "y" ``` --- ## Modification, suppression - pour modifier un objet, on utilise à nouveau "`<-`" ; - la modification d'une copie n'affecte pas l'original ; - la suppression s'effectue avec la fonction `rm()`. --- ## Modification, suppression : exemples ```r premier_objet <- 2+1 premier_objet <- 2+1 second_objet <- premier_objet # On assigne la valeur de premier_objet # à second_objet premier_objet <- 2+2 # On change la valeur de premier_objet # Puis on affiche le contenu des deux objets : premier_objet # Le résultat doit être 4 ``` ``` ## [1] 4 ``` ```r second_objet # Le résultat doit être 3 ``` ``` ## [1] 3 ``` --- ## Modification, suppression : exemples ```r premier_objet # L'objet existe ``` ``` ## [1] 4 ``` ```r rm(premier_objet) # On le supprime premier_objet # Son affichage provoque un message d'erreur ``` ``` ## Error in eval(expr, envir, enclos): objet 'premier_objet' introuvable ``` --- # Packages <br/><br/><br/> <div style='text-align: center;'> <img src = "images/intro/swiss_knife.jpg" width = "500px" title = "Wenger EvoGrip S17 85 mm knife" /> <br/> <span class = "lien_source">Source : <a href = "http://commons.wikimedia.org/wiki/File:Wenger_EvoGrip_S17.JPG#mediaviewer/File:Wenger_EvoGrip_S17.JPG">"Wenger EvoGrip S17" by D-M Commons</a></span> </div> --- ## Packages - les <em class = "coul_1">packages</em> contiennent : * des jeux de <b class = "coul_2">fonctions</b>, * des fichiers d'<b class = "coul_2">aide</b>, * éventuellement des jeux de <b class = "coul_2">données</b> ; - les fonctions élémentaires sont dans le <em>package</em> `base`; - certains <em>packages</em> sont chargés par défaut. --- ## Packages Liste des <em>packages</em> chargés dans la session par défaut (plus `base`) : ```r getOption("defaultPackages") ``` ``` ## [1] "datasets" "utils" "grDevices" "graphics" "stats" "methods" ``` --- ## Packages : installation, chargement Pour installer un nouveau <em>package</em>, le plus simple est d'utiliser la fonction `install.packages()`. ```r install.packages("ggplot2") ``` Pour pouvoir utiliser les fonctions et jeux de données contenues dans un package, il faut le charger. ```r library("ggplot2") ``` --- # Aide <br/><br/> <div style='text-align: center;'> <img src = "images/intro/xkcd_help.png" width = "400px" title = "Help!" /> <br/> <span class = "lien_source">Source : <a href = "http://xkcd.r-forge.r-project.org/">http://xkcd.r-forge.r-project.org/</a></span> </div> --- ## Aide - l'aide en ligne est <b class = "coul_1">simple</b> d'utilisation ; - la plupart des fichiers d'aide sont bien <b class = "coul_1">documentés</b> ; - <b class = "coul_1">accès direct</b> à la fiche d'aide avec la fonction `help()` ; - recherche de fichiers d'aide par <b class = "coul_1">titre</b> ou <b class = "coul_1">mot-clé</b> avec la fonction `help.search()`. --- ## Aide : exemples Pour trouver des explications sur la fonction `log()` : ```r help("log") ``` De manière équivalente, on peut écrire : ```r ?log ``` --- ## Aide Pour rechercher un sujet, un mot-clé : ```r # Pages dont le titre ou le sujet match "logarithm" help.search("logarithm") # De manière équivalente ??logarithm # Pages dont les mots clés contiennent "data" help.search(keyword = "data") ``` La liste des mots-clés est disponible ici : https://svn.r-project.org/R/trunk/doc/KEYWORDS --- ## Aide Quelques <b class = "coul_2">réflexes</b> à avoir : - consulter l'aide à partir du logiciel ; - consulter des ouvrages de référence ; - consulter les archives des <em>mailing-lists</em> ; - consulter les questions sur <em>StackOverflow</em> ; -- Si après épuisement de cette liste, le problème persiste : - formuler une question sur StackOverflow ou sur le groupe de discussion "[Grrr](https://r-grrr.slack.com/)" - pour obtenir une réponse : inclure un exemple <b class="coul_2">reproductible</b> (_reprex_) - Ressource : [tutoriel pour créer un exemple reproductible](https://www.tidyverse.org/help/)