You are on page 1of 51
Effectuez vos études statistiques avec R Par ptitlu el le OPENCLASSROOMS 2/88 Sommaire Sommaire Lire aussi . Effectuez vos études statistiques avec R Partie 1 : Le langage R Introduction & R Peaaestcn que casi? onerament ga fat a7 fatter Istataton sts nda stator sous Ubu Istataton sous Mac 08 X Premiers pas avec R Caconeal Les varabis Unsere fonctions exis Syperves varabcs Décauvrons de nouvelles fonctions. (a pls importante aeneion aie bes enon materatqucs amp Manuele chanes de oractres Imoragueor nee trroonorent R Sauvegardons ! ‘tern fter 2 ss Sraeisons-nvs Enver ou ai Expotr at mporer ds donee Les vecteurs| Ce eter on bj come is tes ison dos voce indsaton Modo des des Opérations et analyses statistiques sur des vecteurs Eoctuor ds opiate su ea vocoure Matias You vous Frayer bn i ca Hiosror i cone dune dsaton Mesure aperson Ge Serbs Manipuler el comparer plusieurs vecteurs Tnagions ue erpitenes Operations ensenbises Qketanttrunble dx ras pds dans ide? Stels nome son commune ai deaxersembes Suet rame neon poses qe carson svrensonte > operate one ncaa on vets de aire Sobrodis Sonetasons et rerestenncae Eecuer dos on statsgves Les facteurs : Guesten qin facou? BSegrseeaselssasaeSases SeesyBSBVsSastoorvvooear Awan Manipuler des facteurs 64 Du facteur au veeteur.. el inversément 66 Les matrices .. 67 ‘Ala découverte des mairces 68 ‘Crone des matrices! e Indexation 74 Une matrce est composée... de vecteurs ! nm Les tableaux de données (dataframes) 75 Une matric... améliorée 75 Créer des tableaux de données 75 Accéder aux éléments dun tableau de données 16 Les listes 78 Un vrai fourre-out, 79 Création et manipulation de lstes sc raltement en sére des éléments dune liste 2 Les istes heterogenes 85 wwopenciassrooms.com Sommaire 3/88 Effectuez vos études statistiques avec R Par pithy Mise & jour 18/09/2011 nédiaire wa Ce tutoriela pour ambition de vous apprendre les bases du langage R qui est lun des programmes d'analyse statistique de référence, notamment auprés de la communauté scientifique et universitaire, Ce tutoriel n'est pas & proprement parler un cours de statistiques. Certaines notions seront utilisées et expliquées si nécessaire afin que le contenu reste clair mais ce cours se concentrera surtout sur lapprentissage de ce langage qu’est R, ses structures de données, les tests statistiques réalisables, la génération de graphiques, son utilisation avancée,... Une fois le tutoriel assimilé, vous serez (nommalement) capables de trouver vous méme comment effectuer un test précis qui n'aurait pas été abordé, Au cours des différents chapitres vous apprendrez. maitriser les rudiments de ce langage, organiser des données plus ou moins complexes pour, au final y appliquer différents tests statistiques mais aussi les représenter de maniére graphique, wwopenciassrooms.com Effectuez vos études statistiques avec R 4/88 Partie 1 : Le langage R Cette premiére partie va vous présenter le langage R, sa syntaxe et son fonctionnement. A la fin de cette section, vous saurez comment organiser et trater toutes vos données et seraient enfin préts et les visualiser graphiquement ou 4 faire de premiéres analyses statistiques. Introduction 4 R est part! On plonge enfin dans le grand bain et on commence ce cours sur R Mais avant toute chose, il faut apprendre ce auiest element Ie langage Ret quotilpeut nous Servis #2 pour commencer a travailercorectoment. il nous faudra aussi Tinstale, Pas de temps & perdre donc, ony va! R: qu'est ce que c'est ? Restun langage de programmation dont le but est de pouvoir trate et organiser des jeux de données afin de powvoiry applquer des test statistiques pls ou moins complexes et se représenter ces données graphiquement Teide dune grande vatktés de graphiques dsponbbes, Développé initialement au début des années 1990 par Ross Ihaka et Robert Gentleman, ce langage basé sur un autre langage statistique appelé $ (oui, les informaticiens ont beaucoup d'magination), est désormais maintenu et mis & jour par une équipe de développeurs au sein du R Project, Cette structure garantit des mises a jour fréquentes et une communauté importante dlutilisateurs apporte son aide pour notamment développer de nouvelles fonctionnalités (des libraries, nous en parlerons plus tard) au projet. Le langage Res mime des cont cn effet trés implanté dans la communauté scientifique et universitaire et ses nombreux utilisateurs organisent \ces pour discuter des nouveautés disponibles sous R. Malgré quelques critiques généralement port ce langage est tr8s utilisé pour diverses raisons: ‘+ ilpermet dorganiser et triter des volumes importants de données de maniére rapide et flexible. Comme ils'agit d'un langage de programmation, vous pouvez (a peu prés) en faire tout ce que vous voulez. * ilpermet dasse7 facilement erger des graphiques paramétrables afin de pouvoir mieux visualiser ke résultat de vos analyses. + lest entigrement gratuit et sous licence GPL, ce qui signifie que vous pouvez en télécharger les sources et les modifier Cest notamment grice a cela qu'une active communauté peut améliorer le langage en permanence. + lest multi-plateforme. Yous pourrez en effet utiliser sous Windows, Mae OS ou Linux, Rest un langage de programmation mais son utilisation est fortement orientée vers les analyses de données et statistiques. Ainsi, si vous souhaitezeréer des jeux vidéos, un lecteur vidéo ou MP3 ou tout autre style dapplication utiitaire vous faites certainement fausse route. Conerétement ¢a fait quoi? Afi dilastrerun peu mes précédents propos je vous propose de rapidement voir quelques examples des capacités de R. Vici un apergu de graphiques que vous serez capables de faire aprés avoir lu quelques chapitres wwopenciassrooms.com Partie 1 : Le langage R 6/88 ‘Mais, évidemment, pour y arviver, il faudra taper quelques lignes de code. Voici un exemple de ce qui vous attend: colsex <- c("red", "blue names(colsex) <- cC"F","M") colsex2 <- colsex[Donnees$Sexe] plot(OonneessTaille, Donnees$Poids, pch=16, col=colsex2) ablineCIm(as.integer(Donnees$Poids) ~ as.integer(DonneessTaille)), col="red") Poids <- as. numeri cCDonnees$Poids [whi ch(DonneessSexe==""")1) PoidsF <- as.numericCDonnees$Poids [whi ch(DonneessSexe=="F")1) plot(density(PoidsF), col="red") Lines(density(PoidsM), col="blue") abline(vamedian(PoidsF), Lty=4, col="red") abline(vamedian(PoidsM), Ity=4, col="blue") boxplot(PoidsM, PoidsF) boxplot(PoidsM, PoidsF, notch-T) wilcox. test(PoidsM, PoidsF) Wilcoxon rank sum test with continuity correction data: PoidsM and PoidsF W = 163109, p-value < 2.2e-16 alternative hypothesis: true location shift is not equal to 0 Un exemple de code en R Ca peut paraitre assez complexe ainsi, surtout si vous étes novices en programmation mais, rassurez vous, dans quelques chapitres vous serez.capables de comprendre et reproduire ces extrats de code ou ces graphiques. Pas de temps & perdre done, installons Rt Installer R Rest disponible sous différente plateformes: Windows, Mac OS et Linux II faudra done adapter Finstallation au type de machine ‘que vous avez. Rendez vous sur cette paxe (page en anglais) pour sélectionner un des miroirs de téléchargement. est préférable de sélectionner un miroir situé a proximité de chez vous. Quelque soit Ie lien choisi, le site et son contenu © Un miroir est une copie du site situé en un lieu différent. Afin de bénéficier de la melleure vitesse de téléchargement, il seront identiques. Installation sous Windows Une fois votre miroir choisi, cliquez sure lien Hindows puis surle ien base. En haut de page apparat alors un lien "Download R for Windows", cliquez dessus pour le télécharger. Une fois le tlchargement fini, lancer le programme dinstallation et suivezles instructions données par les différentes boites de dialogue vous permettant, par exemple, de choisir a langue du protocole dinstallation ou le dossier dans lequel sera installé R. Ivous est alors demandé de choisir le type d'installation. Linstallation compléte ne demande qu'une soiantaine de Mo dspace, ilest done conseillé de la séelectionner comme illustté ci dess ous, wwopenciassrooms.com Partie 1 : Le langage R 7/88 PuER Gage DA uke) Composants a installer ‘Quels composanis de application souhaiter vous install ? Sélectionnez les composants que vous désiez installer: décochez les compasants que ‘yous ne désiez pas installer. Appuyez ensue sur Suivani pour continver instalation, [sateen usar cempte Main Files 21.7 Mio «| Does for Packages aid and Matix [M1 SuocotFles for Packae ick Choix du type dinstallation de R Sivous disposezde trés peu despace sur votre machine, vous pouvez vous contenter de foption par défaut. Linstallation ‘minimale est quant @ elle peu recommandée dans la mesure oi elle n'installe pas certains fichiers d'aide, Enfi, si vous pensez comprendre tous les éléments indiqués dans la liste, vous pouvez essayer d'eflectuer une installation personnalisée mais cette fonctionnalité est plut6t réservée auxutilisateurs avancés, Une fois cette étape réalisée, continuer A suivre les indications des boites de dialogue en gardant les options par défaut. Aprés quelques clies vous aurez installéR, féicitations. Installation sous Ubuntu Sous Ubuntu ou autre distribution dérivée de Debian vous pouvez trouver R via apt-get ou synaptic. Le paquet s'appelle rbase et vous pouvez done installer en langant la ligne de commande suivante, Code : Console sudo apt-get install r-base Sivous disposez d'un autre type de distribution ou que vous souhaitez compiler directement les sources, choisissezle lien Linux surla page de téléchargement du miroir que vous aurez choisi ct sélectionnez le dossier correspondant a votre distribution pour télécharger les sourves, Les instuctions dinstallation se trouvent alors dans un fichier d'aide présent dans le dossier tlécharge. Installation sous Mac OS X Sur la page de téléchargement, choisissezle lien Mac OS X et dans la section Files cliquezsur le premier lien proposé (du type Re xaxxpkg oli xmcxreprésente le numéro de version), Lancez alors le fichier teléchargé en prenant soin de vérifier que votre compte dispose des droits nécessaires. S instructions données par les boites de dialogue. Vous n/aurez normalement pas a changer d'options et pouvez. chaque étape. Votre mot de passe vous sera demandé lors de Tinstallation, rassurez vous c'est normal, cela sert seulement a vérifier que vous avez les droits d'installer des logiciels sur la machine wwopenciassrooms.com Partie 1 : Le langage R 8/88 Apris quelques secondes ou minutes d'attente, R sera install ‘hil, vous en savez maintenant plus surle langage R et !avez méme installé sur votre machine. On va done pouvoir commencer 8 s’armiser et prendre le programme en main, wwopenciassrooms.com Partie 1 : Le langage R 9/88 Premiers pas avec R ‘Cest theure du grand saut, on va enfin démarrerR et commencer prendre ce langage en main, Ne perdons pas de temps, est un chapitre assez conséquent! La console R Le langage Rest un langage interprété. Cela signifie que Ton peut écrite seulement une ligne de code, la valider et en voirle résultat. IIn'y a done pas besoin d'une étape préalable de compilation du code, celui ci est intreprété ala vole, Pour écrire du code en Ron peut done simplement lancer ce que fon appelle la console et taper du code, Cest done ce que fon va commencera faire Pour lancer Ril vous faut done: ‘+ sous Windows, lancer le programme Rexx (ox corespondant d la version) dont un raccourci a été eréé sur le bureau aprés installation ‘+ sous Mac OS X, lancer le programme R présent dans le dossier Applications. ‘© sous Linux et plus généralement tout systéme Unix), ouvrir un terminal et lancer la commande "R” (sans les guillemets), langage qui sera compatible avec toutes les plateformes. Les interfaces graphiques ne sont la que pour rendre lécriture e Les interfaces graphiques sont différentes entre les différents systémes dexploitation mais cela ne change tien au du code moins spartiate (code colors, menus permettant d'éviter de taper du code, auto-complétion,..) Lors de ce tutoriel les captures d'écran proposées sont faites sous Mac OS X, mais comme précisé Ia différence dinterface ne changera rien au niveau du code. Pour les utilisateurs de Linux, il n'y a pas interface graphique installse par défaut avec R mas plusieurs sont disponibles au téléchargement sitravailler dans un terminal vous rebute (une petite liste ic). Vous devriez alors vous trouver devant une fenétre de la sorte wwopenciassrooms.com Partie 1 : Le langage R 10/88 eo Console R S@Rmgx aBo * Q R version 2.6.2 Patched (2008-03-24 r45011) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R est un logiciel libre livré sans AUCUNE GARANTIE Vous pouvez le redistribuer sous certaines conditions. Tapez 'license()' ou 'licence()' pour plus de détails. R est un projet collaboratif avec de nombreux contributeurs. Tapez ‘contributors()' pour plus d'information et "citation()' pour la facon de le citer dans les publications. Tape ‘demoC)' pour des démonstrations, thelp()' pour l'aide en ligne ou *help.start()' pour obtenir 1'cide au format HTM. Tapez 'a()' pour quitter R. Console R sous Mac OS X ‘Comme vous le voyez, un curseur clignote au niveau du chevron (le signe ">"), c'est li que sera rentré Ie code. Commengons done avee des choses faciles et tapons le chiflre 42 et voyons ce que cela donne: Code: R > 42 (21 42 Cela nous retoume le méme nombre, ce qui est plut6t rassurant Le chiffre [1] devant signifie que c’est le premier élément de réponse renvoyé. Parla suite, lorsque nous manipulerons des données plus complexes, plusicurs résultats seront parfois retoumés, dans ce cas leur numérotation sera utile. Je vous rassure, Re sett pas seulement a répéter les nombres qu'on lui donne. Une des fonctions de base est de pouvoir effectuer des opérations élémentaires comme nous pouvons le voir dans cet exemple Code : R > # Tout d'abord on peut rentrer des valeurs négatives > 742 (2) -42 > # Mais aussi des valeurs décimales 4 l'aide du point (et non de la virgule} > 42.1 (1) 42.1 wwopenciassrooms.com Partie 1 : Le langage R 11/88 > > # On additionne > 3943 (2) 42 # on soustrait 58 - 16 yn multiplie ton peut méme diviser =) Reste de la division (modulo: 10 = (3x3) + 1) 0383 1 > # Partie entiére de la division > 10 8/8 3 13 > # Et on peut méme utiliser des puissances. Ici 5 A la puissance 3. > 543 (1) 125 > # Et enfin, on peut combiner plusieurs opérateurs > ((10 + 15) / 5) - 3*2 iy -1 les ignore) et ne servent qu'a donner des indications sur le code. Lorsque vous écrirez de longs scripts, il sera tr’s utile © Les lignes commengant par le symbole ditse (#) sont ce que Ton appelle des commentaires. Ts ne sont pas lus par R (il de commenter le code afin de, par exemple, pouvoir vous rappeler rapidement & quoi sert une partie de code écrite, \ous savez maintenant utiliser les différents opérateurs arithmétiques de base afin d'effectuer des calculs plus ou moins complexes. On va maintenant voir comment on peut stocker les valeurs ou les résultats dans ce que Ion appelle des variables afin de pouvoir plus facilement réutiliser certains parties de votre code par la suite Les variables Rne vous servira au final que rarement & effectuer des opérations aussi simples que celles précédemment décrites. La plupart du temps vous Tutilserez pour effectuer des calculs statistiques complexes et, dans ce cas, Vous aurez souvent besoin de stocker vos résultats quelque part pour les réutiliser parla suite, Cest la quiinterviennent les variables. Les variables sont des cases mémoire qui permettent de stocker des valeurs. Les variables les plus simples permettent de stocker des valeurs numériques (c'est a dite un nombre) ou du texte pat exemple, Dans les chapitres suivants, nous verrons que lon peut aussiyy stocker des structures plus complexes comme des tableaux Mais commengons par des exemples plus faciles et voyons comment on eréé une variable, Un peu de vocabulaire: Quand on créé une variable on dit qu'on la déclare (declaration), Quand on lui donne une valeur, on parle d'assignation, Code :R > # On créé la variable appelée a et contenant la valeur 42 >pac- 42 > # On affiche le contenu de la variable da wwopenciassrooms.com Partie 1 : Le langage R 12/88 (1) 42 > > # On change le contenu de 1a variable pac 8 > > # On affiche son contenu a) 3 > # La précédente valeur a été écrasée, la variable a contient maintenant la nov > > # Liassignation marche aussi dans l'autre sens > 5 >a >a ee a SD) Comme vous le voyez, créer une variable est assez simple. Ily a cependant des rigles a respecter: Jenomdes variables doivent impérativement commencer par une lettre. Jn casse (le fat qu'un earactére soit en majuscule ou minuscule) est importante. Par exemple la variable a sera différente de Iavariable 4 Te nomdes variables peuvent contenir des caractére spéciaux et des nombres (mais pas comme premier caractére), les vatiables ne peuvent pas étre appelées avec des noms deja utilisées par le langage R. Comme vous aver remanqué, lorsque fon assigne une valeur une variable, rien n'est affché dans la console. Rassurez vous, c'est nomail @). Par défut, le sult dune opératon (comme vu précédemment est affiché dans la console. Mais sion assigne ce résultat & une variable alors le résultat sera redirigé seulement vers la variable, plus rien ne sera affiché dans la console Je vous lai dit, on peut stocker plusieurs types d'objet ou de structures de données dans une variable, Nous verrons: les strictures complexes tells que les tableaux, matrices, veeteurs ou listes. Cest ce que fon appelle le type d'une variable, Cest tune notion assez importante en progranmation et ga fest d'autant plas en car le langage est parfois assez capricieuxave le typage des variables Dans lexemple précédent nous avons eréé des variables de type numérique, car nous y avons assigné des nombres. Comme démontré ci dessous, on peut aussiy assigner une cheine de caractres Code : R 4 On assigne une chaine caractére 4 la variable a a <- ‘Hello World’ # On affiche son contenu 1 1] "Hello World" déclaration dune variable ilest possible dutiiser soit les guillemets simples ())ou doubles ("). Cest une question de e Vous vous étes peut étre apergus que R alfiche la chaine de caractéres avec des guillemets doubles ("), En fait, pour la goiit. Mest aussi savoir que le fait dinsérer des guillemets dans une chaine de caractéres peut poser probléme comme illustré ci dessous: Code :R > a <- 'Je m'appelle Philippe.' Erreur : syntax error wwopenciassrooms.com Partie 1 : Le langage R 13/88 ‘Dans un tel cas, R interpréte que la chaine de caractires rentrée commence apres le premier guillemet et s'aréte aprés le guillenet suivant. Du coup, ilne comprend pas pourquoi on écrit encore aprés la fin de la chaine et renvoie une erreur. La solution est d'Sehapper Ie guillement, Conerétement, cela Signifie que Ton va mettre un signe devant le second guillemet (un backslash: \) afin que R comprenne quills‘agit en fait d'une élément du texte et non d'un guillement pour terminer la chatne de caractires. Code :R > # On échappe le guillemet afin que R comprenne qu la chair > a < ‘Je m\tappelle Philippe.’ [1] "Je mtappelle Philippe @ Lees) \ous savez maintenant manipuler les variables en R, comme vous le voyez.iln'y a rien de bien compliqué. Mais vous vous rendez certainement compte qu'en manipulant simplement des variables et des opératcurs tels que des additions ou des multiplication il ny a pas réellement de difference avec une béte calculatrice. Cest pourquoi on va passer a Tétape supérieure et utiliser des fonctions, Utiliser les fonctions existantes Lorsque Ton effectue des analyses statistiques ou simplement de la programmation on est souvent amené a utiliser les memes outils. Ces outils peuvent étre mathématiques (faite la moyenne d'une série de nombres, la some d'une colonne d'un tableau...) pratiques (sauvegarder un tableau) ou encore propres au fontionnement du programme (appeler Taide). Plutat que de devoir a chaque fois écrire beaucoup de lignes de code pour des choses assez simples ct 16 ce que fon appelle des fonetions, Stitives on fait appel a Definition et appel de fonctions Une fonction est done caractérisée par deux composantes ‘+ son nom: c'est ce nom qui nous permettra de nous y réferer, en programmation on dit appeler la fonction. ‘* une liste d'arguments: ce sont les informations dont la fonction a besoin pour travailler et renvoyer'son résul La syntaxe pour appeler une fonction est la suivante: il faut écrire son nomsuivi de parenthéses. Entre ces parenthéses, nous indiquerons les arguments dont ls fonction a besoin: nom de 1a fonction (arguments) Le plus simple pour bien comprendre comment cela marche est de prendre quelques exemples, Imaginons que vous vouliez caleuler la racine carrée d'un nombre, vous pourrez.alors faire appel la fonction sat () (sqrt est labbréviation courante pour square root qui signifie racine carée en anglais). Cette fonction n'a besoin que d'un seu! argument pour travailler: un nombre (ou une liste de nombres mais ga on ne sait pas encore faite) On prend alors pour habitude de décrire une fonction de la manitre suivante: Code: R sqrt (x) Cola permet de savoir combien arguments sont nécessaires et Yon peut aussi détailler le type de Targument (un nombre, une chaine de caractéres,..}, Dans ce cas ci n'y a qu'un seul argument que Ton appelle xest qui doit étre une ou plusieurs valeurs rnumériques. Mais nous verrons parla suite que certaines fonctions en disposent de bien plus Pour voir comment on pourra alors appeler une fonction telle que la fonction sqrt () voyons ces quelques exemples ci dessous. Code: wwopenciassrooms.com Partie 1 : Le langage R 14/88 > # On appelle 1a fonction sqrt en lui passant 1'argument 42. Le résultat renvoy > sqrt (42) (2) 6.480741 > > # On peut transmettre cet argument sous 1a forme d'une variable >a<-9 > sart(a) 13 > > # Et enfin on peut stocker le résultat renvoyé dans une variable pour réutilic > resultat <- sart(a) > resultat a) 3 > # Comme précisé, cette fonction prend un ou plusieurs nombres comme argument. > sqrt("Hello World") Erreur dans sqrt ("Hello World") Argument non numérique pour une fonction mathématique > @ sss) ‘Vocabulaire: le résultat renvoyé par une fonction s'appelle le retour Ainsi lors que Ton écrit sqi(9), on dit que la fonction retoume la valeur 3 Arguments facultatifs Certaines fonctions nécessitent plusieurs arguments el certains de ces arguments sont optionnels et possédent une valeur par défaut. Sion ne leur spécitie pas de valeur, ces arguments prendront la valeur définie par défaut, sinon ils prendront la valeur quion leuraura spécifié Prenons lexemple de la fonction logarithme, Sion veut calculerIe logarithm il faut connaitre deux éléments: Ie nombre que Ton veut transformer et la base du logarithme, Généralement on calcule des logarithmes népériens (aussi appelés naturels) qui ont pourbase le nombre ¢ (qui €quivaut a lexponentiel de 1). Sous R ls fonction logarithms s'appelle 10g () et se décrit de la maniére suivante: Code : R log(x, base = exp(1)) Le premier argument, x, et obligatoire et recevra le nombre que fon veut trans former. Le second argument est désigné par son nom, base et dispose d'une valeur par défaut indiquée apris le signe ~, ce qui désigne quiilest facultatif. lest destiné a définir la base du logarithme. La valeur par défaut pour ls base est donc le nombre e (plus précisément exp (2) ,exp () étant la fonction Ropour exponentie). Sion veut calculer un logarithme de base ¢ on n'aura done pas besoin de le spécifier car il s’agit de la valeur par défaut. Sion veut utiliser un autre base, il faudra alors le spécifier et passer Targument a la fonction log(). \oiei quelques exemple illustrant les différentes manitres d'appeler une fonction contenant des arguments facultatfs Code : R > # Si l'on ne précise pas de valeur pour le second argument (facultatif), la fc > log (2) [1] 0.6931472 > # On peut spécifier le second argument en l'appelant par son nom. On lui donne > log(2, base=exp(1)) [1] 0.6931472 > > # Comme il n'y a que deux arguments il n'est pas obligé de préciser le nom du > log(2, exp (1)) [1] 0.6931472 wwopenciassrooms.com Partie 1 : Le langage R 15/88 > > # Sion change 1a base du legarithme on veit qu'alors le résultat change par 1 > log(2, base=2) Q)1 > > # Autre exemple de changement de la valeur pour la base, entrainant un résulte > 1og(2, 10) (1) 0.30103 > a yy ) Les alias de fonctions Sicertaines personnes utilisent souvent des logarithmes népériens (base ¢), certains utlisent quant cuxplus fréquemment des Jogarithmes de base 2 ou 10. Dans de tels cas il faut alors spécifier a base a chaque fois ce qui peut étre ennuyeux, surtout si fon est feng JAfin de faciliter la vie de ces personnes ci, R dispose de ce que lon appelle des alias (aussi appelés wrappers en anglais). Ces alias sutilisent comme des fonctions normales, la scule différence est que lorsqu’on les appelle elles se contentent dappeler une fonction déja existante en lui spécifiant d'autres paramétres que ceuxpar défault. Dans notre ex:mple on pourra alors se simplifier la tache en appelant les fonctions Log2 () et 1ogi0 () pourcaleuler respectivement des logarithmes de base 2 ou 10. Code : R > # Voici donc deux maniéres de calculer un logarithme de base 10 > log (2, 10) (11 0.30103 > # La seconde étant plus simple A écrire grace aux alias > 1ogio (2) [1] 0.30103 > > # De méme pour un logarithme de base 2 > log(2, 2) ai > > 10g? (2) aia Dans cet exemple léconomic d'écriture est faible mais dans certains cas que nous verrons parla suite, les alias de fonctions pourraient vous simplificrla vie de manigre bien plus criante, Typez vos variables Au débat de ce chaptre vous avez appris& créer des variables mais aussi quien existatdiférentes sortes, PourTinstant vous savez créer et manipuler deux types de variables: les variables numériques et les chaines de caractéres, Nous allons maintenant découvrirun troisitme type de variable mais aussi apprendre comment tester leur type ou créer des variables dun type déterminé Un nouveau type: les booléens Nous allons maintenant découvrir un nouveau type de données: les booléens aussi appelés éléments logiques sous R. Un booléen est unc expression ou un élément quine peut prendre que deux valeurs: vrai ou faux Sous R les mots clefs cortespondant sont TRUE (pouvant s'écrire T- voulant dire vrai) et FALSE (pouvant s'écrire F- voulant dire faux).A noter que les majuscules sont importantes. Le fait de comparer différents nombres est par exemple un booléen car lerésultat ne pourra prendre que deux valeurs: vrai ou faux; selon que la comparaison soit comrecte ou non. Les lignes de codes ci dessous wwopenciassrooms.com Partie 1 : Le langage R 16/88 permettent de découvrir les différents opérateurs de comparaison disponibles dans R. Code: R Le signe TRUE Et le signe ! permet de tester 1'égalité la difference (1'expression signifie "5 est il différent de £ FALSE #5 est i1 inférieur a 5 5<5 ] FALSE #5 est il inférieur ou égal a 5? 5 <5 1 TRUE # Méme syntaxe pour le signe supérieur 5>4 1] TRUE 5 = 4 ] TRUE @ DD Cette syntaxe vous sera utile lors de prochains chapitres lorsque fon souhaitera par exemple trier une liste dléments ou la colonne d'une matrice en fonction de la valeur quis conticnnent. Dans limmédiat les boolens peuvent cependant nous étre utiles, en effet, certaines fonctions renvoient des booléens, c'est dire qu‘elles ne vous retoumeront que deux valeurs possibles: ‘TRUE ou FALSE, Tester le type d'une variable Parmi ces fonctions, certaines servent tester le type d'une variable. Imaginons que vous souhaitez effectuer un traitement sur un nombre. Il serait utile de d'abord vérifier sila variable que vous allez analyser est oui ou non un nombre, sans quoi votre code risquerait de générer des erreurs. Cette fonctionnalité est assurée par les fonctions présentées ci dessous. Code :R > > # Créons une variable dont on veut tester le type > variable <- "A" > > # Fonctions permettant de vérifier si cette variable est: > # Une chaine de caractéres > is.character (variable) [2] TRUE > > # Une variable numérique > is.numeric(variable) [1] FALSE > > # Un élément Llogique (booléen) > is. logical (variable) [1] FALSE, > Ce genre de fonctions existe pour tous les types de variable dont nous apprendrons a nous servir parla suite, leursyntaxe est identique et le leur nomsera spécifié dans le chapitre adéquat. wwopenciassrooms.com Partie 1 : Le langage R 17/88 Créer des variables typées Vous aurez peut étre remarqué, en R, iIn'y a pas besoin de spécifier quel type de variable nous eréons. Rest assez intelligent pour savoir reconnaitre sils‘agit d'un nombre ou bien dune chaine de caracteéres se situant entre guillemets. On dit alors que le langage utilise un typage implicite. Cependant, vous devrer parfois spéciier a Re type de variable que vous soubaiter créer. Ou bien modifier le type d'une série de variables (plus tard cela pourra s'appliquer des structures plus complexes comme des séries de valeurs, des tableaux... Pour pouvoir eflectuer ce type d'apérations,ilsuflt de connaitre et 'appeler les bonnes fonctions: il s'agit principalement des fonctions as nnureric(),as-logical () etas.character() Vous vous en doutezcertainement, la fonction as. numeric () permet de déclarer ou retyper son argument en tant que nombre tandis que as. logical () générera des éléments logiques (booléens) et as.character () des chaines de caractéres, \oyons en quelques exemples. Code : R > # Utilisons 1a fonction as.numeric() > # Evidemment elle peut convertir un nombre... en nombre. Jusque 1a tout va bic > as numeric (42) (1) 42 > > # Elle peut aussi convertir une chaine de caractére contenant un nombre en non > as.numeric("42") (1) 42 > # Par contre si la chaine de caractére contient autre chose que des nombres ce > as.numeric("4A") [1] NA Warning message: NAs introduits lors de la > > > # Regardons maintenant 1a fonction as.character() aversion automatique > # Elle peut transformer une chaine de caractéres en chaine de carac! > as.character ("Hello") [1] “He11o" > # Mais aussi un nombre en chaine de caractéres > as.character (42) (2) "42" res. Rass existe aussi des fonctions as. double (),as.single() etas. real () Elles sont en fait similares & la fonction as. numeric () et feront done (@ quelques exceptions prés) le méme travail Il s'agit en fait de fonctions présentes dans d'anciennes versions de R mais désormis obsolétes. Hlles n’ont été conservées que pour garantir la compatibilité entre les anciennes et nouvelles versions de R, ce que Ion appelle la rétrocompatil existe une autre fonction permettant de typer votte variable en nombre qui est la fonction as . integer (). Le mot integer voulant die entier en anglais vous comprendrez alors que cette fonction permet de convertir ou déclarer une variable qui contiendra une nombre entier (sans décimules). Code: R > # as.integer type un nombre décimal en nombre entier > as.integer (3.14) ni 3 > # De méne pour une aine de caractéres contenant seulement un nombre décimal wwopenciassrooms.com Partie 1 : Le langage R 18/88 > as.integer ("3.14") m3 Je n'ai volontairement pas encore parlé de la fonction as. logical () cares bookens possédent quelques particularités. Lune dientre elle est qu'un nombre, une chaine de caractére ou tout autre type de variable peut étre transformé en booléen, il s agit seulement d'en connaitre les régles détaillées ci dessous et qui vous indiquent ce que renverma la fonction Logical () selon ce que vous lui transmettez comme argument, 0 FALSE Tout autre nombre TRUE Pour les chaines de caractéres: CO ee Cats "F" ou "FALSE" FALSE "T" ou "TRUE" ‘TRUE, “Autre chaine de caraetéres NA \ous avez sans doute remarqué que le demier tableau contient un type de variable que vous n’avezencore jamais rencontré: NA. existe en fait deuxautzes types de variables, des types que lon utilise lorsque nous n'avons pas de données ou alors quielles, n’ont aucune valeur. IIs'agit des types NA ct NULL. La différence entre les deuxest assez étroite. ‘+ NAcst utilisé lorsque la valeur n'existe pas ou nest pas définie. Par exemple, si vous avez une expérience avec plusieurs mesures mais qulune est manquante vous utiliserez alors le type NA. Dans Fexomple préc&dent, sion essaic de convertir tune chaine de caractére en nombre, cela renvoie la valeur NA car Ie résultat renvoyé par cette fonction est quelque chose quinn’existe pas, ‘+ NULL désigne une valeur nulle. Contrairement 4 NA, celle valeur aun sens, elle indique que le résultat n'a pas de valeur (On pourrait généraliser en disant qu'lls'agit de Téquivalent du O mais appliqué a tout type de données. Vous pourez done eréer une variable NULL mais pas NA car ecla signifie que vous voulez eréer quelque chose quin'existe en fait pas. @ Code :R > # Exemples d'utilisation de la fonction as.null() qui renvoie toujours... NULL > as.null (5) NULL > as.null ("Bonjour") NULL BD \ous connaissez maintenant les rudiments du langage R. Yous savez éxécuter du code, effectuer des caleuls élémentaires, stocker leur résultat dans des variables et utiliser des fonctions basiques. \ous conmencez aussi a étre familiers avec le typage des variables Ce chapitte est assez conséquent mais il contient beaucoup de notions qui vous seront trés utiles parla suite. wwopenciassrooms.com Partie 1 : Le langage R 19/88 Alors si vous avezréussile questionnaire ci dessus vous pouvezattaquer le chapitre suivant qui sera un peu plus léger! wwopenciassrooms.com Partie 1 : Le langage R 20/88 Découvrons de nouvelles fonctions Le chapite présédent vous inttodut ce quaint les fonctions et comment on pouvait ks utiliser en R.Hles vous seront ts niles tout at long de vor apprentissage et defutlistion de ce langage et, avec le temps, vous sere7 mime eapable de créer vos propres fonctions ‘Mad en attendant de pouvoir fie cola, ce chaptre va vous apprendre uilzerbon nombre de fonctions utbs qui vous permettrontdeffectuer des calcul athmtiques, vous faciterla vie sous Rou encore Cobtenrla description détailée dune Fonction précse La plus importante: la fonction d'aide Lors du chapitre précédent, vous avez pu vous fumiliariser avec les descriptions de fonctions, c'est a dire la fagon dont fon, représente une fonetion et quivousindigue conment futiser en détailant son nomet les arguments quelle peut prendre (arguments obligatoires et aptionnels) Toutes ces descriptions détaillées sont accessibles dans le fichier d'aide de R qui vous sera d'une grande utilité. Pour chaque fonction vous aurezaccés sa description, le détail des arguments, leur type, le type d'objet retoumé et aussi quelques exemple. Pour ouvrir faide ilsuffit dappeler la fonction hep () Code : R help() ‘Une nouvelle fenétre s‘ouvre alors et yous indique comment utiliser la fonction... heLp () ‘vous étes en mode console (pas dinterface graphique), Iaide s'affichera dans le méme terminal. Pour la quitter, il suffit nonmalement d'appuyer sur a toucke g. wwopenciassrooms.com Partie 1 : Le langage R 21/88 900 Ait help {utils} R Documentation Documentation Description ‘These functions provide access to documentation. Documentation on a topic with name name (typically, an R objector adata_ | se) can be displayed with either help(*nane”) OF fname. Usage help(topic, offline = PALE, package = NULL, Lib-loc = MULL, vertoae = gat0ption|"vorbose"), ‘zy all.packagse = get0ption("nelp.try.all.packages") , enmhelp = getOption("chshaip"), htmnelp = gatoption("neminelp"), pager = getoption("pager")) topic typertopic Arguments, topic usually, a name or character string specifying the topic for which help is sought. A character string {enclosed in explicit single or éouble quotes) is aways taken as naming a topic. For nolp, ifthe value of topic is @Jengih-one character vector the topic is taken to be the value of the only element, Any other argument topic is regarded as a name and deparsed to give the desired topic. For? the topse argument may alko be function call, to ask for documentation on a corresponding ‘method: see the section on $4 metod documentation. Unlike ne1p, all names are deparsed to give the desired topic. See ‘Details” for what happens if this is omited for hei. ofstine ‘logical indicating whether documentation should be displayed on-line tothe sereen (the default) or hardcopy of ic should be produced package ‘name or character vector giving the packages o look into for documentation, or Nur. By defaultall = packages inthe search path ae used : Apercu de ta fendtre d'aide R Comms: vous Tavez certainement remarqué, les fichiers d'aide sont en anglais, A ma connaissance, iln'en existe pas de version traduite Les pages dide sont composées de plusieurs sections dont les plus importantes sont: ‘© Description: cette partie indique & quoi sert la fonction et détaille quelques éléments importants ou intéressants connaitre. ‘+ Usage: clest la définition de la fonction. On peut y voir a liste d'arguments possibles. Dans le eas de la fonction help () n'y en a qu'un seul obligatoire quiest topic. Cest cet argument qui définita le sujet (fonction ou autre) pour lequel vous désirez afficher Taide. + Amuments: cette section détaille la nature des différents arguments obligatoites ou optionnels. On apprend a quoi ils Servent, quel est leur type et comment les utiliser: te: ici on pourra retrouver des informations complémentaires sur le sujet. Ces descriptions sont en général assez techniques ou permettent de connaitre lexistence de fonctions similares a celle actuellement consultée. + References: donne les références d'une publication scientifique détallant léktment consult. La ga devient trés technique. ‘* SceAlso: renvoic vers d'autres pages d'aide concemant des fonctions similaires de R. ‘+ Examples; une partie qui peut s'avérer trés utile par moments car elle recense quelques exemples d'utilisation de la fonction consultée, méme siils ne sont pas toujours accessibles pour des débutants, Maintenant que vous savez conment décrypter le fichier d'aide, vous étes capable diutiliser la fonction hep () et par exemple wwopenciassrooms.com Partie 1 : Le langage R 22188 de regarder la page concernant la fonetion Log () Code: R > # Voici différentes manigres d'ouveir la page d'aide pour la fone! > help ("log") > help (log) 3 ‘ous pouvez alors retrouver toutes les informations que je vous avais indiquées dans le chapitre précédent: les arguments obligatoires et optionnels, les alias tels que 1092 () et 10910 () ou encore des fonctions en relation comme la fonction exp) Sivous souhaitez plonger plus en détail dans la documentation R vous pouvez lors appelerla fonction help. start () Aprés un petit temps de changement elle vous affichera une documentation trés complete (en anglais) dans votre navigateur ‘intemet par défaut. Yous pourrez notamment y trouver les sections suivantes: ‘+ An Introduction to R : des principes générauxconcemant les variables, objets, fonctions,.. sous R. Un peu comme ce tuto done, ‘+ ‘The R Language Definition: des instructions plus techniques sur le fonctionnement inteme de R + RData Import/Ewort: cette section indique comment faire communiquer R avec d'autres programmes, lire des fichiers, (On y reviendra en partie dans Tes chapitres suivants ‘+ Rinstallation and Administration Des aides et conseils concemant installation et administration de R.A consulter si vous rencontrez des problémes & ce niveau la ‘ous avez done maintenant les bases suffisantes pour savoir consulter Taide et y retrouver les informations dont vous avez besoin. Mais parfois, le plus difficile reste de savoir si une fonction particuliére existe et, sitelest le cas, quel est son nom, Rendez vous done avec la suite de ce chapitre pour faire connaissance avec bon nombre de fonctions utiles. It si vous souhaitez plus de détails les concemant, vous sautez oi trouver linformation. Des fonctions mathématiques a la pelle Nous allons maintenant découvrirun certain nombre de fonctions qui vous permettrontdteffectuer des opémtions rmathématiques simples. Cette partie peut paraitre un peu "catalogue" mis elle vous permettra de facilement retrouver le nom d'une fonction si vous la cherchez. Commengons par exemple par apprendre comment arrondir un nombre. Sivous avez un nombre décimal et que vous désirez travailler sur un nombre entier (sans décimales) ces fonctions vous seront alors utiles Code: R > # La fonction floor (sol en anglai: renvoie a L'en inférieur > floor(2.4) 112 > # La fonction ceiling renvoie l'entier supérieu > ceiling (2.4) 3 > # la fonction round > round(2.4) 112 > round (2.6) Pour une utilisation plus spéeifique vous pourrez aussi trouver des fonetions trigonométriques: Code :R wwopenciassrooms.com Partie 1 : Le langage R 23/88 > # La fonction cosinus > cos (90) [1] -0.4480736 > # Sinus > sin (90) [1] 0.8939967 > # Et tangente > tan (90) [11 -1.995200 Yous connaissez maintenant un petit nombre de fonctions et commencez.a étre habitué a les utiliser: On peut alors avancer en découvrant d'autres fonctions qui vous seront utiles au fur et & mesure de votre progression. Manipuler les chaines de caractéres Saisir des données depuis le clavier Nous allons maintenant voir comment manipuler de maniére plus poussée les chaines de caractéres. Une des premigres ‘opportunitéintéressante est de pouvoir aisir des données depuis le clavier Cela pourra étre dautant plus utile si vous envisages par exemple parla suite de créer un script qui sera utilisé par d'autres personnes. Leur proposer entre des valeurs personnelles pemettra de disposer d'une version plus personnalisable du programme. Pour ce faite, il suffit d'appeler la fonction scan () Lorsque vous appelez cette fonction, R vous proposera une ligne commengant par" I:" vous invitant & entrer du texte. Saisissez votre texte et validez. Vous pourrez alors entrer un second élément et ainsi de suite. A partir du moment oit vous ne souhaitez plus tien saisir, validez seulement sans entrer de texte au préalable. La fonction renverra donc son résultat qui contient ce que vous avez tapé. Code :R # On appelle la fonction scan sean() > 1 2 3: AG Read 3 items fs 87 > On rentre par exemple ici 3 éléments avant de quitter la saisie en validant ave a Leas) données que nous n'avons pas encore vue appelée un vecteur, Dici quelques chapitres vous saurez les manipuler sans © Vous pouvez remarquer que les trois chifltes saisis sont renvoyés Sura méme ligne, Il s'agit en fait d'une structure de Comme nous ne savons pour Instant manipuler que des variables & une seule dimension, nous allons modifier lappel a cette fonction afin que fon ne puisse y rentrer qu'un seul élément. Ceci est possible grace 4 Fargument optionnel nmax qui permet de définir combien entrées Tutilsateur pourra saisi. Par défaut il s'agit d'une valeur négative indiquant que seul Tutilisateur peut arréter la saisie. Voyons done maintenant comment enregistrer une seule entrée, Code :R > # On appelle 1a fonction en précisant que l'on ne souhaite saisir qu'un éléner > scan(nmax=1) A: 42 Read 1 item wwopenciassrooms.com Partie 1 : Le langage R 24/88 42 a > > # La saisie s'arréte donc aprés un seul élément et le résultat est renvoyé > # On peut bien évidemment stocker le tout dans une variable. > variable <- scan (nma: 1 Re 24 ad 1 item > 4... et l'afficher > variable (1) 24 Concaténer du texte Une autre possibilité est de concaténer du texte. La concaténation est le procédé qui pemmet de coller bout a bout différents ‘morceauxde texte pourn'en fare plus qu'un seul. Sipar exemple vous avez plusieurs variables contenant du teste et des nombres, la concaténation vous permet de mettre ces éléments ensemble selon un ordre définiafin de n'avoirau final qu'une seule et Unique chaine de caractézes EnR la concaténation se fait grace & ln fonction paste () .Son usage est assezsimple. IL sufft de lui passer en argument tous les différents éléments que Ton souhaite coneaténer et spécilier grace & Targument sep comment on souhaite les relier(avee un ‘espace, un autre caractére ou rien) Le mieuxreste de regarder Texemple suivant. Code : R > # On créé des variables contenant les informations > age <- 25 > nom <- "Philippe! > # On apelle la fonction paste() en lui donnant les différents élémen > paste(*Bonjour je m\'appelle', nom, ‘et j\'ai', age, ‘ans", sep=" ') [1] "Bonjour je m'appeile Philippe et j'ai 25 ans" @ On peut combiner ce code avec la fonction scan () vue précédemment pour quelque chose de plus adaptable. Code : R > paste("Bonjour j\'ai ', scan(nmax=1), ' ans") Le code ci dessus est volontairement un peu plus complexe mais c'est pour vous faire progresser. Q) On peut tout moment imbriquer des fonctions les unes dans les autres comme ieila fonction scan () imbriquée dans la fonction paste (). Ici éxicutera donc le fonction pas=e () en premieret y rencontrem la fonction scan () quillexicutera alors en demandant & Tuiisateur de saisirune entrée, Pour fnit, argument sep n'est ic pas prévisé et prend done sa valeur per # Cette fonction permet de compter les nombre de caractéres, espaces compris. > nchar ("Hello World!") (a) 12 Les deux fonction suivantes, toupper () et tolower () ,sont elle aussitrés simples diutilisation. Leur ble est de transformer Ia chaine de caractéres donnée en argument soit tout en majuscule (zouppex () ) soit tout en minuscule (za Lowex ()). Code :R > toupper ("BoNjouR") [1] "BONZOUR" > tolower ("BoNjouR") (21 "bonjour" La fonction 5 Elle pe str (x, start, stop) est quant elle légérement moins facile mais toujours relativement simple d'emploi t dextmaie une sous chaine allant du caractére numéro start au caractére numéro stop @ partir dune chaine de caractéres x donnée en argument. Le code ci dessous permet par exemple de ne conserver que la partic de la chaine de départ allant du deuxigme au quatriéme élément, Code :R > substr("Bonjour", 2,4) [i] Moni" Pour finir cette section et vous habituer a la manipulation & la fois des chaines de caractéres et des fonctions, vous allezessayer de résoudre le petit exercice ci dessous. Tout d'abord créer la variable suivante a l'aide du code ci dessous Code: R variable <- "Bonjour" Maintenant je veux que vous éeriviez le code qui renverra, en majuscules, le contenu de la variable allant du second & Tavant demier caractére. Yous devez respecter les contraintes suivantes: vous ne devez.éerire qu'une ligne de code et faire appel au ‘moins une fois & la fonction ncnar () Si vous rencontrez des problemes, vous pouvez trouver un peu d'aide ci dessous. Secret (cliquez pour afficher) Pour résoudte ce petit probleme il faut que vous gardiez en mémoire: ‘© que favant demier caractére est le caractére de numéro égale @ la longueur totale de la chaine - 1 ‘+ que les fonctions peuvent s'imbriquer. Ainsi si vous devez spécifier un nombre comme argument, vous pouvez trés bien spécifier une fonction qui renverra le nombre voulu, Wici la solution wwopenciassrooms.com Partie 1 : Le langage R 26/88 Secret (cliquez pour afficher) Code : R toupper (substr (variable, 2,nchar (variable) - 1)) Interagissez avec l'environnement R Pour fnirce chapite, nous allons apprendre & uiiser un certains nombres de fonctions qui vous permettent dinteragiravec votre environnement de travail. En effet, R stocke de maniére invisible a Putilisateur un ensemble de paramétres qui lui permettent_ de définrdes valeurs pour certains paramires. Cette demitte parti vous apprendra donc &affcher les options que Rutise, ls modifier ou encore listers variables que vous avez créées Commengons «ailleurs par cet exemple, Imaginons que cela fait un moment que vous travaillez dans votre console Ret que vous avez eréé de nombreuses variables. Le probleme est que vous ne vous souvenez plus du nomexact de lune d'ente elle. Heureusement, il existe une fonction R qui vous permet de les afficher,ils'agit de la fonction 1s () Code: R > # Créons quelques variables pour 1'exemple > varl <= 2; var2 <- 5; var3 <- "Bonjour"; var4 <- 42; varS <- -2 > > # Et listons les maintenant > 1st [1] "vari® "var2" "var3" "vara" "vars" > ‘Les curicux qui ont déja consulté la page d'aide de la fonction 1s () auront remarqué la présence d'autres arguments optionnels tels que pattern qui permet de filtrer les variables dont le nom est composé d'un patron particulier (patter se traduit par patron cen frangais) Code: > 4 Créons d'autres variables pour 1'exempie > var6 <- 8; resultat < log(1); ma_variable <- "Hello world” > # Maintenant affichons seulement les variables dont le nom contient 1a successi > is (pattern="vaz") (1) "ma_variable" "vari" vara" vars" "vara" vars" a@ BS) Vous pouvez done apercevoir que seule la variable resultat n'est pas affichée. Cette option pourra vous étre utile lorsque vous aurez un grand nombre de variables eréées et que vous voudrez en retrouver une précisément dont vous vous souvenez vaguement du nom, Sivous pensezque vous avez trop de variables et que certaines ne vous sont plus wiles, vous pouyez.en supprimer simplement ‘en utilisant la fonction rm () comme indiqué ci dessous Code: R > 4 on efface 1a variable var6 > zm(var6) > # En utilisant la méme commande que précédemment on voit qu'elle a disparu > 1s (pattern: (1) "ma_variable" "vari" tvar2" vars" "vara" vars" wwopenciassrooms.com Partie 1 : Le langage R 27188 Et pour init ce chapitre, voyons comment... quitter le programme, Sivous utilsez une interface graphique vous aurezcertainement remarqueé les différents boutons ou menus vous permettant de quitter Ie programme mais sachez quil existe une maniére plus rapide de le faire, notamment si vous travaillez.en monde console. Isuffit d'appeler la fonction quit () ou son alias raccourei ¢() La fonction « () prend plusieurs arguments optionnels dont le premier save qui permet de spécifiersi fon veut oui ou non sauvegarder notre espace de travail. Sivous souhaitez gardcr toutes les variables que vous avez créées (que vous pouvez voir grace & la fonction 25 ()), il vous faudra alors sauvegander votre espace de travail quiles contient toutes. Ainsi, lorsque vous redémarrerez R la prochaine fois, ise souviendra de vos variables et vous pourrez directement les réutiliser. Les différents choix possibles sont alors: ‘+ "yes": votre espace de travail sera sauvegardé, R eréera un fichier quill enregistrera sur votre disque dur et s'en servira au prochain démarrage pour restaurer toutes les variables que vous aviez lors de votre demire fermeture. ‘* “no”: Tespace de travail ne sera ce coup ci pas sauvegardé. Au prochain lancement de R, ilne contiendra aucune variable dgja existante. ‘© “ask":R demandera alors explicitement si vous voulez enregistrer ou pas votre espace de travail, Cette option est rarement utlisée mais peut tre utile dans certains cas assez précis, ‘© “default”: il s‘agit de faction effectuée par défaut, généralement Foption "ask", Si vous ne spéeifier aucun argument a la fonction 4 () c'est alors cet argument qui sera utilisé. Wild, c'en est fini de ce chapitre un peu plus récréatit que le précédent. Vous y avez découvert bon nombre de fonctions qui vous aideront soit dans votre utilisation quotidienne de R, soit dans des cas un peu plus précis et rares Dans tous les cas vous étes désormais habitués & utiliser les fonctions sous R et nous allons done pouvoir attaquer des parties plus conséquentes mais aussi plus intéressantes. wwopenciassrooms.com Partie 1 : Le langage R 28/88 Sauvegardons ! Depuis le début de ce worst nous avons trvaiéquen mode console, esta die que nous rntions un bout de code dans le terminal ou Tinterface graphique de Ret on voyak ce qlse passat Dans la suite de ce tutor nous allons apprendre a effectuc des ations pls complexes mas aussi et surtout demandant plus decode. I nous faudr alors ensgistrer ce code quckqie part pour pouvoir fetcuter tout dun coup ou plsieurs fois sans avoir ‘ale retaper, De méme, il pourra étre utile de pouvoir enregistrer les résultats (ce qui est affiché sur lécran) et nos variables (qui Seront parla suite bee pas complexes quune simple caine de earactére) af de pouvoir faciement les teutliser parla sue ‘Abs altiendons pas en apprenons comment ft out ga @ Créer un fichier de script UUne des premitres choses a fie avant dlttaquerIérture dune longue succession de ines de code est done de sauvegander Tetout dans un fichier exteme, Cela perme af ‘+ de gatderune trace du code entier ailleurs que dans le terminal ou la console. ‘* de pouvoir éxécuter lensemble du code rapidement sans avoir a copier coller le tout dans le terminal ou la console. ‘* de pouvoir facilement modifier le code et Ie tester i nouveau, Pour cela rien de plus simple, i vous suflit simplement d'ouvrir un éditeur de texte, aussi simple soit ilet de commencer a y éerire votre code. Tous les sysiémes d'exploitation (Windows, Mac, Linux) proposent nativement des éditeurs de texte plus ou moins performants tels que le bloc-notes (Windows), Textedit (Mac OS) ou emacs et vi (Linux). Si vous souhaitez travailler un peu plas confortablement, vous pouvez opter pour un éditcur de texte proposant la coloration syntaxique qui vous écria les mats clefs de R de couleur différente afin de rendre votre code plus lisible, Selon les plateformes vous pouve7 opter pour des éditeurs plus ou moins simples comme Notepad» (Windows), Smuliron (Mae), SeiT: (Linux), Felipse (malit-plateforme), Imaginons maintenant que nous voulons réaliser ce petit script assez simpliste qui permet de donner plusicurs informations sur ‘un nombre donné: Code :R ¥ On saisit un nombre d'intérét nombre <- 42 # Et on en tire différentes informations paste ("Etudions le nombre: ", nombre} paste("Le logarithme népérien de ce nombre est: ", log(nombre)) paste ("La racine carrée de ce nombre est: ", sqrt (nombre) } paste ("Le cosinus de ce nombre est: ", cos(nombre)) paste ("Si on ajoute 3 au nombre ", nombre, " on obtient: “, nombre + 3) # Bt maintenant on quitte R en demandant si on veut sauvegarder notre espace de a ("ask") Une solution pour 'éxécuter est de copier collerIe tout dans R. Cela marche mais n'est pas trés pratique notammment sion doit souvent le modifier et lerelancer. Nous allons donc le sauvegarder dans un fichier exteme. Pour cela copier coller ce code dans votre éditeur de texte et sauvegarder le sous le nomde test R (et souvenez vous de son emplacement) Pour féxécuter il suffit maintenant d'utilser la fonction source () dont le seul argument obligatoire est le nomdu fichier & éxécuter.Sile chemin pour accédera votre fichier est /Users/vottelogin/test.R vous pourrez alors lancer le script en utilisant le code suivant dans votre console R: Code : R wwopenciassrooms.com Partie 1 : Le langage R 29/88 source ("/Users/vo relogin/test.R") IL faut donc spécifier le chemin d'accés de votre fichier en tant que chaine de caractéres (done entre guillemets). Sivous ne le faites pas, R pensera quiils‘agit du nom d'une variable et vous renverra done une erreur car iln’en trouvera pas appelée de la sorte, \otte script s'est done bien éxgcuté et il finit par vous demander si vous voulez enregistrer votre espace de travail comme le spécific Ia demiére ligne du script. Par contre vous aurez emarqué une chose Strange: rien ne s'est afliché. Pour comprendre pourquoi, il faut savoir que lorsque Fon saisit par exemple un nombre, une variable, une opération ou un appel de fonction dans la console de R, celui civérifie que Fon n'assigne pas ce résultat & une variable. Sitel ost Ie cas, R déduit alors que Ton souhaite seulement voir le résultat de la commande entrée et laffiche done. Ce que Ton ne voit par contre pas cest quill Je fait en appelant de maniére invisible la fonction pint () .Ainsi ces différentes lignes de code ci dessous sont équivalentes, elles sont juste plus ou moins longues & éerie. Code : R > print (42) 1 42 42 1] 42 Par contre, dans certains contextes, comme par exemple le fait d&xécuter un fichier via la fonction source () ,Tappel a la fonction (0 est indispensable pour pouvoir afficher du texte. En modifiant Iegérement notre fichier tes.R nous pouvons, faire en sorte quil affiche les résultats qui nous intéressent, voire méme du texte seul pour nous informer de favancée du programme. Pour vous en rendre compte, remplacez lancien code du fichier test R par le nouveau code ci dessous, enregistrez.le fichier et éxécutez le comme précédemment en appelant la fonction source () Code : Autre e: ",nombre)) en de ce nombre est: ", log(nombre))) logarithme nép zacine carrée de ce nombre est sqrt (nombre) )) cosinus de ce nombre est: ", cos(nombre))} on ajoute 3 au nombre ", nombre, "on obtient: ", nombre + 3)) Ce coup cles résultats se sont nomalement bien afichés @) Pour ceux qui préférent travailler directement dans un terminal dans un systéme Unix ilest possible de lancer R en lui spécifiant votre fichier de script comme fichier d'entrée, Il faut seulement savoir que, dans une telle situation, R reequiert qu’on lui spécifie & Tavance sion souhaite ou non sauvegarder notre espace de travail. Le travail en terminal permettant dans certains cas de pouvoir lancer plusieurs scripts de maniére rapide, le fait de demander & Tutiisateur de rentrer une re Cette démarche, Les commands demandant une interaction avec Tutlisoteur seront ainsi ignorées. Ce sea par exemple le cas de appel ila fonction q ("ask") dans notre fichier test. Si vous soubaitez éxécuter votre fichier en ligne de commandes dans un terminal il vous faudra donc éviter de faire appel& de telles fonctions. hier de script, deux solutions s‘oflrent a vous Si vous souhaitez sauvegarder l'espace de travai --save < /Users/votrelogin/test.R Si vous ne le souhaitez pas o-save < /Users/votrelogin/test.R Pour plus d'informations concernant ces options et celles apene uitatives mais wwopenciassrooms.com Partie 1 : Le langage R 30/88 iD] Pour les ulilisateurs plus avaneés en programmation et systéme Unixil est aussi possible de eréer des scripts exécutables en ligne de commande comme cela peut généralement étre fait dans d'autres langages de programmation, Pour cela, i faut specifier dans la premiére ligne du fichier quil faudra exécuter le script & faide de Rscript, un programme installé en méme temps que R. Son emplacement varie sclon les installations mais il est généralement situé: ‘¢ dans /usr/bin/Rscript sures installations Linux ‘© dans /Library/Frameworks/R framework’ Versions/2.6/Resources/Rscript pour Mac OS X. Siil est pas installé dans un de ces dossiers sur votre installation Unix vous pouvez essayer de le localiser & Taide de la commande: cate Recript Pour trans ormer votte fichier de script en fichier exécutable il vous faudra alors indiquer en premigre ligne du fichier Templacement de Rscript a Taide de la syntaxe suivante: Code :R #!/usr/bin/Recript puis de vous placer dans le dossier contenant le seript puis de rendre le fichier exteutable a Taide de la ligne de commande suivante. Code : Console chmod 755 test.R Dans votre terminal, il vous sullit alors d'appeler votre fichier pour en exécuter le contenu, Code : Console test.R Organisons-nous Nous venons done de voircomment erer un fichier de sept et comment fexécuter Parla suite nous allonseréer de plus en pls de fichier, stocker des résultats, enrepster des graphiques,.. Pout éviter de sy perdre et de devoirchercher es diférents Fchier un peu partoutsurnote disque dur lest tonps de sorganiser Pour ce faire, je vais vous introduite la notion de répertoire de travail. Lorsque fon démarre R, il définit un répertoite de travail, clest& dire le répertoire dans lequelil pense que lon enregistre nos fichiers de script, nos fichiers de sortie. Pour connaitre ce répertoire il suflit d'appeler la fonction get wal () (abbréviation pour get working dir: nécupérer Ie repertoire de travail). Si vous appelezcette fonction (sans arguments) dans votre console, elle vous renverra votre répertoire de travail actuel, Code: R wd) wwopenciassrooms.com Partie 1 : Le langage R 31/88 [11 "/Users/votrelogin™ > Ce dossier changera selon votre installation de R mais surtout selon le systéme dexploitation que vous utilisez. Nous allons alors maintenant eréer un nouveau répertoire qui contiendra nos différents fichiers, e structurer et indiquer a R que nous allons ‘désormais travailler dans ce dossier, Sur mon ordinateur jai done créé un dossier R accessible & Iadresse "/Users/votrelogin/RY et qui contient quatre sous dossiers: "scripts", "donnees", "resultats” et "graphiques". Comme vous pouvez vous en douter, chacun de ces dossiers sera amené & accueil respectivement nos fichiers de scripts, nos fichiers de données a traiter, les résultats que fon enregistrera et les ‘graphiques que nous produirons. la suite du tutoriel je me référerai a cette structure de dossier pour appeler les scripts ol enregistrer les différents © Cette structure de dossier n'est évidemment qu'un exemple, lire a vous d'en choisir une autre, Cependant, durant toute résultats Maintenant il va falloir spécifier & R que Ton travaillera désormais dans ce dossier. Il faut pour cela donner ladresse de notre nouveau dossier comme argument a la fonction set wa () (abbréviation pour set working dir: définir le répertoire de travail). En exécutant le cade ci dessous vous pourtez spécifier votre répertoire de travail et vérifier que la modification a bien eu lieu en appelant une nouvelle fois la fonction getwa () . Hest a noter que Tadresse menant vers le dossier R doit étre bien évidernment adaptée a votre cas, elle sera normalement différente sur votre machine, Code :R # On change notre dossier de travail setwd ("/Users/votrelogin/R") # Et on vérifie que la modification a fonctionné getwd () 1] "/Users/votrelogin/R” e Quel est lintérét d'une telle manipulation? Désormais, comme R sait que vous travaillez dans un dossier précis, vous pourrez implement préciserles adresses de fichier (pour exécuter en script ou sauvegarder des résultats ou variables comme nous le verrons juste aprés) & partir de ce dossier, \ous n'aurez plus besoin de préciser l'adresse absolue de votre fichier (du genre "/Users/votrelogin/R" pour un systéme Unix ou "C/Documents/R" pour un systéme Windows) mais seulement son adresse relative au dossier courant. Par exemple, si vous copiez votre fichier test R précédemment créé dans votre dossier "R/seripts/" vous pourrez désormas Texécuter avec cette ‘commande. Code: R source ("scripts/test.R") Homis le gain de place et de caractéres, cei permet par example de faclement transporter son code entre plusieurs machines voire pisieurs utsateurs, Si vous copice votre dossier sur une nouvelle machine ov un nouveau disque duril vous sulla alors de changer votte dossier de travail grice&la fonction setwa (). Nous nfaurezalors aucune autre modification a effectuer dans tout votre code dans la mesure oii vous pourrez désommis indiquer le nom de vos fichiers seulement a pati de ce repertoire ci. Enregistrer vos résultats Pourfinstant nous ne savons générer des résukats que via des opérations simples, fappela certains fonctions ou encore la concaténation de plusieurs de ces éléments, Ces résultats ne se rerouvent done que sous forme de texte affichés dans notre console ou notre terminal. I] vous sera parfois utile de sauvegarder cet affichage, cela vous évitera de relancer votre script ce qui seta d'autant plas appréciable siila besoin de beaucoup de temps pour séxscuter wwopenciassrooms.com Partie 1 : Le langage R 32/88 Pour comprendre comment faire ceci, il me faut dabord vous introduire Ia notion de sortie. La sortie en programmation indique Tendroit (un périphérique de Fordinateur, un fichier...) od sera écrit le résultat que nous venons de généret. Nous avons vu précédemment que, par défaut, ces résultats sont affichés sur Técran, dans la console ou le terminal R. Nous avons aussi vu que nous pouvons rediriger ce résultat, cette sortie, vers une variable. Dans ce cas, rien n'est affiché & lécran car le résultat est cnregistré dans une variable, clest a dire une case mérmire, Dans notre cas, nous voulons maintenant enregistrer ce qui est Gert & 'éeran dans un fichier texte Pour cela il va nous falloir rediriger la sortie vers le dt fichier. Ainsi, les résultats qui sont normalement aflichés lécran seront directement écrits dans ce fichier. Ceci nous est possible grace a la fonction sink () Son utilisation est assez simple. La premiére étape consiste a indiquer a R vers quel fichier on souhaite rediriger la sortie. Il suffit done d'utiliser la fonction sink (} en lui indiquant en argument le nom du fichier vers lequel la sortie sera reditigée. Une fois que fon ne souhaite plus enregistrer quoi que ce soit dans ce fichier on rappelle la fonction sink () sans argument ce qui indique quil faut rediriger la sortie vers la solution par défaut, a savoir fécran. ‘Testons ga el commengons par enregistrer le petit script suivant dans le dossier scripts ct sous le nom "essai_sinkR” Code :R # Si vous avez quitté R, votre dossier de travail peut avoir été perdu. # Dans le doute, on le redéfinit. Le nom est évidemment a adapter. setwd ("/Users/votrelogin/R/") print ("Ce résultat apparaitra sur 1'écran.") print (5 * 2) # on redirige maintenant vers un fichier de sortie. Si il n'existe pas il sera « sink("resultats/sortie essai sink.txt") print ("Les résultats sont maintenant enregistrés dans notre fichier de sortie.") print (8 * 2) ¥ On redirige a nouveau la sortie vers la solution par défaut: 1'écran sink() print ("On affiche de nouveau la sortie sur 1'écran") q aap Fi maintenant, exécutons ce fichier via la fonction source () Code : Autre source ("scripts/essai_sink.R") Vous pouvez alors constater qu'une partie des résultats s'est affichée sur fécran, Si vous ouvrez Ie fichier "resultats/sortie_essai_sink a" vous pourrez alors voir qu'llcontient les résultats affichés entre les deuxappels a la fonetion sink() Tout comme pour les résultats générés lors de Tappel de la fonction source () les résultats affichés aprés un appel de la fonction sink () ont besoin d’étre affichés grace & la fonction pzint () Une demigre subtilité & connaitve a propos de la fonction sink () est son argument facultatif append. Il dictera a la fonction son comportement si jamais vous souhaitez écrie sur un fichicr défi existant. Si vous indiquez FALSE (sa valeur par défaut), le contenu du fichier existant sera écrasé, c'est & dire que les anciennes données seront effacées et seules les nouvelles y seront Gerites.A Tinverse, si vous indique7 TRUE, les données seront ajoutées au fichier, aprés les données déja existantes Grace & cette fonction vous savez désormais enregistrer des résultats que vous pourres facilement reli. Mais vous serez parfois amenés & vouloir enregistrer des résultats ou données de maniére & ce que R puisse les rere, ce qui n'est pas le eas ici. Cest ‘maintenant ce que nous allons voit, wwopenciassrooms.com Partie 1 : Le langage R 33/88 Exporter et importer des données Imaginons maintenant que vous souhaitezefectuer une série ’analyses qui demanderont un temps de calcul assez.conséquent Nous éerivee votre seript et au bout de quelques minutes ou heures il vous renvoie votre résulat Et imaginons maintenant que vous allez devoirréutiiser ce résultat final dans plusieurs autres scripts parla suite, Iles alors facile de comprendre quil serait plus pratique de sauvegarder le résultat de notre premier calcul pour finalement limporter dans les autres senpts. Ceci nous évite Gavoira eutiliser le premier programme a chaque fois que Ton veut fire touncrles suivants quien dépendent. Dans notre cas nous ne savons pas encore manipuler des données complexes ainsi que des fonctions gourmandes en temps de calcul, Mais on va faire comme si, Nous allons créer une premier script qui effectuera une série d’opérations. Nous allons ensuite exporter le résultat final dans un fichier que R sera capable de décrypter parla suite, A partir de li, nous pourrons importer ce fichier dans d'autres scripts pour pouvoir appliquer de nouvelles opérations au résultat qu'il contient. ‘Commengons alors par créer un premier script dont le but est de générer un résultat que lon va sauvegarder. Enregistrons le dans "scripts/generer_resulta.R", Code: R # Vous savez maintenant a quoi sert cette ligne, n'oubliez pas de 1'adapter =) setwd ("/Users/votrelogin/R/") # on définit un nombre de départ nombre depart <- 0 # Bt on y applique différentes opérations. Vous devez normalement toutes les cor print ("Traitement") resultat <- nombre depart + 10 resultat <- cos(sin(resultat)) resultat <- resultat * resultat resultat <- log2(resuitat) resultat <- sqrt(((resultat * 10) / (resuitat + 5)) * -5) # on a fini nos différents traitements et on enregistre le résultat dans un fict print ("Sauvegarde") save(resultat, fil print ("Fini =)") @ =p) donnees/resultat .RData") La nouveauté dans ce code est la fonction save () . Flle prend un argument obligatoire qui est le nom de la variable & sauvegarder. Un autre argument doit étre spécifié il sagt de fle, il indique Templacement oi sera enregistré la sauvegarde de la variable. Ragit un peu bizarrement avec cette fonction, fargument file étant facultati mais sa valeur par défaut entraine 'échee de la fonction. Ine faut done pas oublier de le préciser, ni d'indiquer de quel argument ils'agit (en indiquant file) pour pouvoir le distinguer des autres arguments facultatifs Par Fintermédiaire de cette fonction save () ,R eréé un fichier qu'il pourra rele par la suite pour restaurer la variable ‘elle qu'elle était au moment de la sauvegarde. Ce type de fichier n'est pas fait pour étre lu par un human, Si vous essayez ailleurs de Touvrir grace a un éditeur de texte vous verrez qu'llest tout simplement incompréhensible (cst un fichier binaite), Pour sauvegarder un résultat de maniere & ce qu'une personne normale puisse le lire, utilisez done la fonction sink () décrite plus tot dans ce chapitre. Maintenant que notre variable est sauvegardée, nous allons pouvoir futile dans autres scripts. Iva pour cela flor fue ;ppella fonction Load () comme vous pouvez constater dans le code ei dessous que vous pouvez enregistrer sous le mom "seripts/analyser_resultat Code: R # Mise a jour de votre espace de travail comme d'habitude setwd ("/Users/votrelogin/R/") # On charge 1a variable que l'on avait précédemment enregistrée load ("donnees/resultat .RData") wwopenciassrooms.com Partie 1 : Le langage R 34/88 # Et on y applique un nouveau traitement nouveau _resultat <- (resultat + 3)*4 nouveat_resultat <- sqrt (nouveau_resultat) "yy print (paste("Le nouveau résultat est: ", nouveau_resultat, se} La fonction Load () ne prend qulun argument: le fichier importer. Son utilisation est elle aussi partculiéecarilne faut pas nécessairement assigner le résultat de la fonction a une variable, La fonction load () restaure le contenu de sa variable ainsi ‘que son nom Ainsile fait importer le hier "donnees/resufat RData" restaurera la variable result avec son niomet sa valet. Sivous assignez e retour de eet fonction & une variable, ln variable importée sera restaurée dela méme manifre ct la variable reupérant le retour de a fonction oad () contiendr lenomde la variable restaurée Pour pls de facie est conseilé de nommer le chit de sauvegande avec lemme nom que la variable, cela vous penetra de gagnerdu temps ©) Iest maintenant fheure de tester si tout cela marche, On va pour cela appeler le premier script "scripts/generer_tesultat.R” qui enregistrera la variable, appeler la fonction zn () vue précédemment pour effacer la variable que Ton vient de sauver pour finalement la rSimporter grace au second script "scripts/analyscr_resultat.R, Cest cxactement ce que fait Ie code ci dessous. Code: R # On définit notre espace de travail si besoin setwd ("/Users/votrelogin/R/") # on lance le premier script qui enregistre la variable resultat source ("scripts/generer_resultat.R") #4 0n efface cette variable zm(resultat) # Et on la réimporte dans le second script source ("scripts/analyser_resultat.R") Dans les exemples précédents nous avons sauvegardé une variable dans un fichier mas ilest tout a fait possible de stocker plusieurs variables dans un seul et méme fichier. Ainsi, lorsque Ton importera ce fichier ilchargera dans notre environnement R toutes les variables quil contient. Vous pouvez tester cette fonctionnalité grace au code ci dessous. Code: R # On définit notre espace de travail si besoin setwd ("/Users/votrelogin/R/") # on créé plusieurs variables nombre <- 42 nom <> "Paul" # on sauvegarde ces variables dans un méme fichier de sauvegarde save(nombre, nom, file="donnees/nombre.nom-RData") # on efface ces variables xm(nombre, nom) # Et on les réimporte grace A la fonction load import <- load("donnees/nombre.nom.RData") # On affiche le nom des variables importées print (import) # Et leur contenu print (nombre) print (nom) wwopenciassrooms.com Partie 1 : Le langage R 35/88 \ous avez pu remarquer une nouveauté dans cette portion de code. Tout dabord la fonction rm () peut prendre plusieurs arguments. En effet, tant qu‘on lui donne des variables existantes en entrée, la fonction rm () va les effacer. Ainsi, pour effacer dix variables vous n'aurez pas besoin d'appeler dix fois la fonction rm () mais seulement une seule fois en lui foumissant les 10 variables & effacer en argument. Lafonction save () fonetionne de la méme maniére. Yous pouve7 lui spécifier autant de variables que vous le souhaitezcomme argument, elles seront alors toutes sauvées dans le méme fichier spécifié via Yargument fle Plusieurs fonctions de R fonctionnent de la méme maniére. Elles sont repérables dans leur description dans le fichier d'aide par le fit que le premier argument est représenté par trois points (..) comme visible ci dessous. fanane) Aide R. save {base} R Documentation Save R Objects Description aave writes an extemal representation of R objects to the specified file. The objects can be read back from the file at a later date by using the function 10ad (or data in some cases). save. inage( ) is just a short-cut for ‘save my current workspace’, i., save (ist = is(all=TRUE), file = ".RData"), Itis also what happens with q("yes"). Usage save) list = character(0), file = stop("'file’ must be specified"), ascii = FALSE, version = NULL, envir = parent.frame(), compress = !ascii, eval.promises = TRUE) save.inage(file = ".RData", version = NULL, ascii = FALSE, compress = !ascii, safe = TRUE) Arguments Page d'aide de la fonction save (). Le premier argument est symbolysé par 3 points qui indiquent que plusieurs variables ‘peuvent étre spécifiées et qu'elles seront toutes traitées de la méme fagon. Aiinsi, lorsque vous croiserez une telle description dans Taide vous saurez que cette fonction peut travailler sur, non pas une scule variable, mais plusieurs & la fois, Ce chapitre est désormas fini! Yous y avez appris & organiser votre espace de travail, exécuter facilement votre code mais aussi a sauvegarder vos résultats et vos données. Pour instant, cela peut sembler dérisoire étant donné que lon ne sait pas encore faite de scripts trop compliqués mais avec Tapprentissage dés le chapitre suivant de structures de données plus complexes ccla va se révélertrés utile. Alors autant avoir les bonnes habitudes et pratiques des le début! wwopenciassrooms.com Partie 1 : Le langage R 36/88 Les vecteurs Yous en aver mane de ne travallerqulavee des variables aussi simples qulun nombre ou une suite deletes? Yous soubhaitez pouvoiren eréer qui contiendraient toute une série de nombres, de noms, didentifiants,.” REjouissez vous, le temps est vent. Nous allons maintenant aborder pendant plusieurs chapitres un des principauxatouts du langage R: la gestion de données complexes. R vous permet effectivement de facilement créer mais surtout manipuler diverses structures de données que vous découvrirez sous le nomde vecteurs, matrices, tableau de données, Ce chapitre va présenter a structure la plus basique mais aussi peut étre la plus importante sous R: le veeteur. Le veeteur, un objet comme les autres TAR le vecteurest un des élments de base du langage. Un vecteur est une iste Jéments étant tous du méme type. Par exemple, jusqu’a maintenant, vous saviez manipuler des nombres. Un vecteur est une structure qui vous permettra done de stocker plusieurs nombres dans une méme variable, Dailleurs, pour ces structures complexes, nous ne parlerons plus de variables comme précédemment mais d'objets. Fn effet, nous avons vu que les variables permetiaient de récupérer le contenu dune case mémoire. Or, pour les objets, information a stocker est bien plus importante et hétérogéne. Selon le type dobjet on peut, en plus des valeurs, par exemple avoir des noms, des niveauxou bien d'autres informations annexes a stocker. Cest ce que Ton appelle les attributs de l'objet, Le terme variable ne désignera done maintenant que le nomdonné a objet, le nom qu'il nous faudra éerire pour y accéder i —4 _vatale ey —_. | noon Représentation schématique dun objet La définition d'un vecteur nous indique quil peut comporter plusieurs éléments et ceuxci doivent étre du méme type. Pour pouvoir créer un vecteurilfaudra done lui spécifier deux attributs: e type de ces éléments et la ongueur du veeteur (le nombre a'éléments quil comportera). Nous verrons méme parla suite quillexiste autres attributs qui sont euxoptionnels tels qu‘un nom pour les différents éléments. Les attributs sont les propriétés d'un objet. Ce sont des informations communes a tous les objets du méme type. Les attributs peut étre récupérés et modifiés grace 4 des fonctions particuligres que nous apprendrons A utiliser parla suit. Pour finir cette introduction je vais maintenant vous faire une petite révélation: vous avez défi manipulé des vectcurs lors des précédents chapitres sans vous en rendre compte. En effet, en R,ilnfexiste pas d'ékéments isolés, ce qui veut par exemple dite, guiun nombre seul n'est en fat pas une variable de type numérique mais un veeteur de type numérique et de longueur 1. Cest pour cela que Iaftichage d'une variable dans la console était toujours précédé du chiffre [1] qui indiquait qu'lls'agissait du promicr élément du vecteur. Cela veut surtout dire que toutes les fonctions mathématiques que vous avez précédemment utilisé ‘ont pris des vecteurs comme argument, Vous pourrez donc les utiliser de la méme fagon avec un veeteur de taille I qu'un vecteur de taille 10 ou 1000. La seule différence sera done que la fonction vous retoumera le résultat sous la forme d'un vecteur de Jongueur (généralement) égale a la longueur du vecteur d'entrée, La bonne nouvelle donc c'est quien fait vous savez déji, ‘manipuler et effectuer des opérations sur des vecteurs, le seul détail c'est quis n'avaient qu'un élément Créons des vecteurs wwopenciassrooms.com Partie 1 : Le langage R 37/88 pris cette partie théorique mettons maintenant la main a la pate et voyons comment eréer un veeteur.Ilexiste en fait beaucoup de maniéres différentes de le faite. Selon le contexte, votre type de données ou votre taux fainéantise vous serez amener plus souvent une méthode plutét qulune autre mais toutes resteront utiles & connaitre, Utiliser la fonction vector) La premigre méthode est la plus didactique car elle demande de spécitier explicitement les différents attributs de Fobjet que fon veut créer, un bon moyen d'appréhender ces objets donc ! Il faut pour cela faire appel 4 la fonction vector () et lui préeiser le type de données que le vecteur va contenir ainsi que le nombre d'léments (la longueur du vecteur). Souvenez vous que tous les éléments d'un vecteur doivent étre du méme type. Un vecteur peut se composer d'éléments des types suivants: des éléments numériques, ‘* des chaines de caractéres, ‘* ou des éléments logiques (booléens) Lexemple suivant vous permet de eréer un vecteur contenant 10 éléments numsériques Code : R > vector ("numeric", 10) (410000000000 Cette ligne de code nous a done eréé un vecteuravec 10 éléments numériques et leur a assigné une valeur par défaut qui est ici Je nombre 0, En connaissant cette syntaxe pour la fonction vector () on peut donc eréer d'autres vecteurs comme illastré ci dessous. Code :R > # On peut par exemple créer un vecteur contenant des chalnes de caractéres et > vector ("character", 5) (ery > > 4 La valeur par défaut est une chaine vide "" > # Création d'un vecteur contenant 8 éléments logiques (booléens, valeur par dé > vector ("logical", 8) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE > # En appellant la fonction vector() seule elle utilise les arguments par défar > vector () logical (0) > # On peut donc alors créer des vecteurs de type logique en précisant seulement > vector (length=10) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE > # Enfin on peut évidemment assigner l'objet créé 4 une variable et l'afficher > vecteur <- vector("numeric", length=30) > vecteur (11000000000000000000000000000000 > existe une solution plus rapide que Tappel ala fonction vector (). Les fonctions numeric (), character () et Logical () pemettent de directement eréer un vecteur du type voulu. IIn'y a alors plus qu'un seul argument a préciser pour eréer un vecteur: sa longueur Le tableau ci dessous récapitule les solutions équivalentes pour eréer un vecteur de taille 10 wwopenciassrooms.com Partie 1 : Le langage R 38/88 veetor("numerie”, 10) numerie(10) vector("character", 10) character(10) vector("logical”, 10) logical(10) Saisir les éléments au clavier Ceux qui ont bien suivi es précédents chapitres et ont une bonne mémoire se souviendront que fon a déja vu une fonetion permettant des vecteurs: la fonction scan(). Nous avions effectivement vu que si fon rentrait plusieurs nombres au clavier ils étaient alors tous stockés dans la méme structure qui est en fait un vecteur, Les lignes de code suivantes permettent done de créer des vecteurs grace a cette fonction, @ Code : R 4 cxéer un vecteur de taille 3 grace A la fonction scan() scan(nmax=3) pi 2 3 ead 3 items 11123 # Vous pouvez aussi ne pas spécifier la taille maximum et arréter la saisie er OUSeNEVV VEE NEY Read § itens (1) 5 8 42 45 21 > Baas) Cotte méthode a cependant certains inconvénients: le fonction scan () ne permet de rentrer que des nombres et elle est pew adaptée pour rentrer un grand nombre de d'éléments, Générer des séries de nombres Sivous souhaitez créer de grands vecteurs avec des valeurs spécifiques il existe alors d'autres méthodes qui vous permettront de générer par exemple des suites ou des répétitions d'éléments La syntaw suivante permet de générerune suite allant d'un nombre & un autre Code: R > # Générer une suite de 1a 10 > 1:10 1123456 > > # Générer une suite de 8 4 19 > 8:19 (11 8 91011 1213 14 15 16 17 18 19 > 8 9 10 wwopenciassrooms.com Partie 1 : Le langage R 39/88 > # La suite peut aussi se faire en ordre décroissant > 20:10 (11 20 19 18 17 16 15 14 13 12 11 10 Notez bien cette syntaxe, elle pourra vous étre ts utile par a suite Hest aussi possible dutiliser des fonctions permettant de générer des suites de la sorte notamment grace aux fonctions rep () etseq() Code :R > # La fonction rep() permet par exemple de répéter 10 fois le nombre 1 > rep(1, 10) Q@)1i21ii1111212 > # Cela marche aussi avec d'autre type d'éléments comme les chaines de caracté: > rep("A", 10) (11 tan a > > # ou les booléens > rep (TRUE, 10) (2) TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE > > # On peut aussi générer des séquences avec 1a fonction seq() > seq(1,10) (11°23 4 5 6 7 8 910 > > # Elle nous permet d'indiquer le pas. Par exemple ici on va de 1 a 10 en ne cx > seq(1,10,2) m)13579 > @ Sess) ree Concaténer plusieurs vecteurs ‘Une demiére méthode consiste a concaténer plusieurs vectcurs, Nous avons déja précédemment parlé de concaténation mais avec des chaines de caractéres, Le principe est ici le méme saufqu’au lieu de mettre bout a bout différentes chaines de caractéres, on le fera avec des vecteurs. La syntaxe est assez simple mais rappelez vous qu'un vecteur doit toujours contenir des éléments du mime type. Il vous sera done impossible de concaténer deux vecteurs contenant des éléments de types différents (par exemple des éléments numériques avec des éléments logiques). Ta coneaténation de vecteurs se fait a Taide de la fonction () , Cette fonction prend autant darguments que vous le soubaitez, chacun des arguments donnés étant ajouté au nouveau vecteur dans Fordre dans lequel ila ét6 ajouté Code : R > # On créé un vecteur contenant 3 nombres différents (je vous rappelle qu'un nc > (1.2/3) m)123 > > # On peut aussi en créer avec d'autres types d'éléments pac (WAGE SauCs) [1] "A" ape nn > # Ici on va concaténer deux vecteurs préalablement créés dans un troisiéme > vecteurl <- 1:10 > vecteur2 <- rep(2,5: > vecteur3 <- c(vecteurl, vecteur2) > vecteur3 (112345678 91022222 wwopenciassrooms.com Partie 1 : Le langage R 40/88 @ See) Nommer les éléments Pour plus de lisibilité, on peut étre amené & vouloir donner des noms auxéléments d'un veeteur, Créons par exemple un vecteur appelé poids dans lequel nous noterons le poids de 4 individus: Mare, Julie, Sophie et Blaise Commengons d'abord par enéerle vecteur contenant les valeurs. Code : R >poids <- > poids [11 77 58 66 99 77, 58, 66, 82) ‘Maintenant, pour pouvoir lie plus facilement ce vecteus, on veut associer un noma chacun de ces éléments. Pour cela, nous allons utlser la fonction names () . Cette fonction renvoie les noms des différents éléments d'un objet tel qu'un vecteur. Sion utilise pour connaitre les noms des éléments du vecteur poids ilnous retoume NULL, tout simplement car, par défaut, les éléments dun vecteurn’ont pas de nom. Code: R > names (poids) NULL > ‘Nous allons alors utiliser cette mime fonction names () pour assigner des noms aux éléments du vecteur poids. éléments. En appelant sculement la fonction, nous pouvons consulter ees noms. En y assignant une valeur, on peut les e La fonction names () permet de consulter ou de mettre & jour Iattsibut dun vecteur contenant le nomdes différents mettre jour Le code ci-dessous permet done de définir des noms pour les différents éléments de notre vecteur poids. Code :R > names (poids) <- c("Marc", "Sophie", "Julie", "Blaise") > poids Mare Sophie Julie Blaise 7 58 66 89 Indexation Les index numériques ‘Maintenant que vous savezeréer des vecteurs, ilest fort probable que vous ayezbesoin de travailler seulement sur une sous partie de celui ci. Afin de permettre ce type de manipulation, les éléments d'un vecteur sont indexés ce qui signifie que chague lément est accessible grace a un index numérique ou parun nom qui peut lui étre attribus. Les éléments d'un veeteur sont done indexts pardes nombres allant de 1 la longueur du vecteur: Lindex | permettra done daccéder au premier élément du vecteur, index? au second élément et ainsi de suite jusqu’au demier élément. Pour aceéder A un élément d'un vectcur via son indexon utilise la syntaxe décrite dans lexemple suivant, Code: R wwopenciassrooms.com Partie 1 : Le langage R 41188 vecteur <- 11:25 vecteur [1] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 > > # Créons un vecteur allant de 11 4 25 > # En indiquant 1'index désiré (ici 1) entre crochet aprés le nom du vecteur or > vecteur(1] Gy at > # Le chiffre 11 est effectivement le premier élément de ce vecteur > vecteur [5] (1) 15 > # Tout comme 15 en est le cinquiéme a@ iD} Le sytéme permet cependant d'etre plus puissant que cela carilest possible d'extrare plus d'un élément d'un vecteur la fois. Il sufft pour cela de spécifier plusieurs indexsous Ia forme... d'un veeteur. Au lieu de spécifier un seul nombre entre les crochets, il sufft alors de spécifier un vecteur contenant les indexdes éléments que Ton souhaite extrare, Yous pourrez ici vous rendre compte que vous aurez tout loisird'utiliser les différentes méthodes précédemment décrites pour eréer des vecteurs Les exsmples cidessous illustrent comment extraire différents prénoms dun vecteur grace & différentes méthodes, Le résultat est renvoyé sous la forme d'un nouveau vecteut Code: R # Créons d'abord notre vecteur prenoms <- ¢("Philippe", "Iren "Pierre", "Pau ", "Lucie", "Chloe", "Zacques > > # On extrait les éléments correspondant aux index allant de 1 a2 > prenoms[1:2) [1] “Philippe’ > a > "Irene" f Extraction des 4éme et 6éme éléments du vecteur prenoms[c(4, 6) ] ] "Paul" "Chloe" > # On crée un nouveau vecteur contenant 10 fois le huitieme élément du vecteur > prenoms (rep (8,10) ] [1] "Wathilde"’ "Mathilde" "Mathilde" "Mathilde" "Mathilde" "Mathilde" "Mathilde > > # Création d'un vecteur contenant le 3éme, le 8éme et a nouveau le 3éme élémer > prenoms(c(3, 8,3) | [1] “Pierre” | "Mathilde" "Pierre" > > # Cette syntaxe nouvelle permet de sélectionner tous les éléments sauf les 3 1 > prenoms(~(1:3) ] [1] "Paul" "Lucie" "Chloe" "Jacques" "Mathilde" @ Ss) Les index booléens Texiste une autre fagon de sélectionner les éléments d'un vecteur. Une méthode qui peut paraitre contre intuitive mais qui vous sera pourtant trés utile parla suite: Tutilisation de booléens. La petite portion de code ci dessous vous en montre un exemple. Code : Autre wwopenciassrooms.com Partie 1 : Le langage R 42188 > prenoms(c(rep(TRUE, 3), rep(FALSE, 4), TRUE) ] [1] "Philippe" "Irene" ‘ "Pierre" | "Mathilde" On transmet ici un vecteur contenant 3 fois TRUE, 4 fois FALSE puis | fois TRUE comme index pour le vecteur prénoms que nous avons précédemment eréé, Le nouveau vecteur résultant de cette opération ne comportera alors que les éléments dont indexa la valeur TRUE, a savoir les éléments numéro 1,2,3 et 8. Cette approche peut paraitre ici surprenante car on ne se contente pas de spécifierIes éléments que Ton souhaite sélectionner mais aussi ceuxdont on ne veut pas. Indiquer que nous ne souhaitons que les éléments 1,2,3 et 8 aurait tout aussi bien fonctionné, Et vous avez entitrement raison, Mais imaginons ‘maintenant un autre cas \ous souhaitez manipuler un vecteur composé éléments numériques non ordonnés tel que celui er6é par le cade ci dessous. Code :R > vecteur2 <- cf > vecteur2 fi] 1234 5 67 8 9101112 87 6 5 22 2 2 8 §1011121 @ Ee) y rep(2,4), 8:15, 16:12) Supposons alors que vous ne souhaitezen extraire que les éléments supérieurs & 7, Nous avons vu lors des chapitres précédents quillexiste des éléments de comparaison permettant de tester une affirmation et de retoumer un booléen. Comme vous savez maintenant aussi que les variables numériques ou les chaines de caractéres isolés ne sont en fait que des vecteurs de longueur 1, vous comprendrez alors que fon peut appliquer ces éléments de comparaison a un vecteur. Ceci renverma un nouveau vecteur de méme longueur que le vecteur testé et dont les éléments seront des booléens: TRUE sila comparaison est vrai, FALSE dans Fautre cas. Code: > # On teste si les éléments de vecteur2 sont supérieurs a 7 > vecteur? > 7 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUS TRUE TRUE TRUS TRU a ee) Lacommande vecteur? > 7adone eréé un veeteur de méme longueur que vectewr? et dont les éléments indiquent si oui ou non la comparaison est vraie ou non. En donnant ce nouveau vecteur comme élément ‘indexation pour le vecteur initial vecteur2 on pourra ainsi en extraire les éléments étant supérieurs a 7 Code sR > vecteur2[vecteur2 > (11 8 9101112 8 8 91011 121314 15 16 15 14 13 3 > Utiliser le nom des éléments sments siils ont été Pour pouvoir sélectionner des éléments précis d'un vecteuril est possible de se référer auxnoms des définis. Dans Texemple du vecteur poids que nous avons eréé précédemment, nous pouvons appeler un élément par le prénom qui lui est associé. II suit simplement de spécifierle(s) nonvs) des éléments que nous voulons extraire au lieu de leurs index rumériques comme le montre Iexemple ci dessous. Code: wwopenciassrooms.com Partie 1 : Le langage R 43/88 > # On sélectionne seulement la valeur associge au nom Sophie > poids{"Sophie"] Sophie 58 > > # On peu > poids (c("Sophie", Sophie Julie 58 6s aussi sélectionner plusieurs éléments en spécifiant un vecteurs de 1 ngulie”) } Modifier des éléments Finissons maintenant ce chapitre important en apprenant une nouvelle manipulation de base pouvant étre effectuée sur un vecteur: modifier un ou plusieurs de ses éléments Sivous avez bien suivi-t bien compris la section surTindexation il vous sera alors tr8s facile de comprendre cette partie car elle repose entidrement surles mémes notions. IIn'y a en effet rien de bien compliqué pour modifier un ou plusieurs éléments d'un vecteur.IIsuffit dindiquer lo(s) élément(s) que Ton souhaite modifier en se référant a leur indexet de spécifier un nombre égal de valeurs de replacement, Lexemple ci dessous vous illustre ainsi comment modifier des éléments du vecteur prenoms que nous avons étudié précédemment. Code : R > # On modifie le troisiéme élément par un nouvel élément > prenoms[3] <- “Quentin” > prenoms [1] "Philippe" "Irene" "Quentin" "Paul" "Lucie" "Chloe" “Jacques > # On modifie ensuite les éléments d'index 4 et 7 par deux nouveaux éléments. > prenoms(c(4,7)] <- c("Jean", "Didier") > prenoms [1] "Philippe" "Irene" "Quentin" "Jean" "Lucie" "Chloe" "Didier" @ asp) Comme vous le constatez, iln'y a rien de bien compliqué dans la manoeuvre dans la mesure oii vous étes un minimum laise avec Tindexation des vecteurs. EL voili un autre chapitte important de clos. Nhésitez pas a le relite si vous pensezne pas avoir compris certains détails carla ‘manipulation des vecteurs est primordiale en R. Diune part, vous venez de faire votre premier pas avec des objets pluri-dimensionnels. Les vecteurs vous permettent de pouvoir rmanipuleret étudier des séries de valeurs organisées dans une structure adéquate, Désormais vous serezamenés @ n'utiiser quasiment que ce genre d'objets. Dune par, ils'agit d'une structure de base qui est omniprésente en R.Lorsque vous manipulerez des structures plus complexes vous vous rendrez compte que leur manipulation est trés similaire. Et pour cause! certaines de ces structures sont en fait composées de vecteurs organisés en objets plus avanet wwopenciassrooms.com Partie 1 : Le langage R 44188 Opérations et analyses statistiques sur des vecteurs Maintenant que vous savez eréer ef manipuler des vecteurs ilest temps de s'amuser un peu avec ses structures de donn découvrir comment en tirer des informations statistiques ou encore comment pouvoir y appliquer des opérations arithme Cette partie permet de se rappeler que Rest un langage dédie a des études statistiques. La partie programmation et gestion de données y sera toujours présente mais ce chapitre vous indiquera aussi comment extraire des informations statistiques intéressantes de vos données. Effectuer des opérations sur des vecteurs Au début de ce tutoriel vous avez appris @ effectuer des opérations élémentaires sur des variables numériques. Vous savez désommais que ce que fon appelat alors des variables étaient en fait des vecteurs numériques de longueur I. Yous ne serez done pas surpris d'apprendre que les opérations arithmétiques que vous connaissez’'appliqueront de manitre sinilaire sur des vecteurs de taille supérieure, reste seulement a savoir comment R gére tout ga et cest le but de cette section, Tout d'abord, pour fensemble de ce chapitre nous allors étudier un méme jeu de données. Nous allons voir comment nous pouvons manipuler ct extraire des résultats intéressants dune série de mesures de poids (en kilogrammes) que nous allons sgénérer grace au code ci dessous Code :R (85,78, 98, 66, 78,77, 62,89, 92, 76, 77,55, 68, 71, 72, 99, 102, 54, 66, 98, 75, 82, 83,75} Nous allons maintenant voir comment nous allons pouvoir effectuer des opérations sur cet objet. Imaginons par exemple que vous venez de vous rendre compte que la balance dont vous vous tes servis pour faire les mesures était mal réglée et quill faut rajouter un kilogramme & toutes les mesures. Il faut donc rajouter 1 tous les éléments de ce vecteur Pour cela, il audit théoriquement créer un vecteur aussilong que le vecteur poids et contenant la valeur | ct de Fadditionner au vecteur poids. Cela marche effectivement mais ily a une solution plus simple qui fait appel & une fonctionnalité de R qui s'appelle le recyelage. Sifon soubaite faire une opération (une addition dans notre cas) entre deux vecteurs, il est alors possible d'utiliser deux vecteurs de longucur différente, R procédera alors de la manire suivante: il gardera le veetcur le plus long pour y effectuer Topération et, partir du vecteur plus court, ileréera un vecteur aussi long que le premier en y répétant (recyclant) les éléments déja existants, autant de fois que nécessaire pour obtenir un vecteur aussi long que le premier. Raura done deux vecteurs de méme longueur & sa disposition pour travailler Lexemple ci dessous est Fillustration parfaite de ce principe. Code :R > # On rajoute 1 a tous les éléments du vecteur et on met A jour la variable > poids <> poids + 1 > poids i] 86 79 55 99 67 79 78 63 90 93 77 78 $6 69 72 73 100 103 a Leas) plus court (le nombre I est le seul élément d'un vecteur de taille I) et a que le veeteur poids. Ilajoute alors ce nouveau veeteur au vecteur poids Imaginons maintenant que vous vous étes rendu compte que votre balance est trés facéticuse et ne se déréglait en fait qu'une mesure sur deux En d'autres termes, les mesures dindex impair sont correctes et les mesures d'index pair sont faussées d'un kilogramme. Comme nous avons déja rajouté un kilogramme & toutes les valeurs, il va falloir désormais en enleverun & toutes les mesures dindeximpair auxqueles il n'aurait rin fallu rajouter préc¢demment. Fh utilisant le recyclage, cette opération peut étre faite trés simplement de la maniére suivante, Code :R > poids <- poids - ¢(1,0) wwopenciassrooms.com

You might also like