Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
r_atelier1 [2016/11/23 18:23]
beausoleilmo [Quelques sites web pertinents]
r_atelier1 [2021/10/13 23:49] (current)
lsherin
Line 1: Line 1:
 +<WRAP group>
 +<WRAP centeralign>​
 +<WRAP important>​
 +<wrap em> __AVIS IMPORTANT__ </​wrap> ​
 +
 +<wrap em> Depuis l'​automne 2021, ce wiki a été discontinué et n'est plus activement développé. </​wrap>​
 +
 +<wrap em> Tout le matériel mis à jour et les annonces pour la série d'​ateliers R du CSBQ se trouvent maintenant sur le [[https://​r.qcbs.ca/​fr/​workshops/​r-workshop-01/​|site web de la série d'​ateliers R du CSBQ]]. Veuillez mettre à jour vos signets en conséquence afin d'​éviter les documents périmés et/ou les liens brisés. </​wrap>​
 +
 +<wrap em> Merci de votre compréhension,​ </​wrap>​
 +
 +<wrap em> Vos coordonnateurs de la série d’ateliers R du CSBQ. </​wrap>​
 +
 +</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +
 ======= Ateliers R du CSBQ ======= ======= Ateliers R du CSBQ =======
  
Line 6: Line 24:
  
 //Le contenu de cet atelier a été révisé par plusieurs membres du CSBQ. Si vous souhaitez y apporter des modifications,​ veuillez SVP contacter les coordonnateurs actuels de la série, listés sur la page d'​accueil//​ //Le contenu de cet atelier a été révisé par plusieurs membres du CSBQ. Si vous souhaitez y apporter des modifications,​ veuillez SVP contacter les coordonnateurs actuels de la série, listés sur la page d'​accueil//​
 +
 ====== Atelier 1 : Introduction à R ====== ====== Atelier 1 : Introduction à R ======
  
 Développé par : Sylvain Christin, Cédric Frenette Dussault, Dalal Hanna Développé par : Sylvain Christin, Cédric Frenette Dussault, Dalal Hanna
  
-**Résumé :** Dans cet atelier ​d’introduction à R, vous apprendrez ce qu’est le logiciel d’analyse statistique Rvous verrez ​plusieurs raisons pourquoi vous devriez ​absolument ​l’utiliser ​(!), et vous ferez vos premiers pas dans ce logicielVous verrez comment R peut être utilisé comme une calculatrice,​ vous apprendrez ce qu’est un « objet » dans R, et vous utiliserez des fonctions simples. De plus, vous apprendrez comment télécharger de nouvelles fonctions et comment trouver des ressources d’aide pour utiliser R. Si tout ceci vous semble étrange, ne vous inquiétez pas! À la fin de cet atelier, vous comprendrez tous ces concepts. ​+**Résumé :** Durant ​cet atelier, vous apprendrez ce qu’est le logiciel d’analyse statistique R et vous découvrerai ​plusieurs raisons pourquoi vous devriez l’utiliser. Vous ferez vos premiers pas dans ce logicielVous verrez comment R peut être utilisé comme une calculatrice,​ vous apprendrez ce qu’est un « objet » dans R, et vous utiliserez des fonctions simples. De plus, vous apprendrez comment télécharger de nouvelles fonctions et comment trouver des ressources d’aide pour utiliser R. Si tout ceci vous semble étrange, ne vous inquiétez pas! À la fin de cet atelier, vous comprendrez tous ces concepts. ​
  
-Lien vers la présentation Prezi associée : [[http://prezi.com/8ckbtue5pgi4/csbq-atelier-r-1/|Prezi]]+**Lien vers la nouvelle ​[[https://qcbsrworkshops.github.io/workshop01/workshop01-fr/​workshop01-fr.html#1|présentation Rmarkdown]]**
  
  
-===== Installation de R et de Studio =====+//S'il vous plaît essayez-la ​et dites aux coordonnateurs des ateliers ​ce que vous en pensez!//
  
 +Lien vers l'​ancienne [[http://​prezi.com/​8ckbtue5pgi4/​csbq-atelier-r-1/​|présentation Prezi]]
 +
 +Téléchargez le [[https://​github.com/​QCBSRworkshops/​workshop01/​blob/​dev/​workshop01-fr/​ReferenceScriptAtelier1.R|script]] requis pour cet atelier.
 +
 +===== Installation de R et de R Studio =====
 Avant de débuter cet atelier, vous devez installer les logiciels R et R Studio sur votre ordinateur personnel. Pour obtenir le logiciel R, rendez-vous au http://​www.r-project.org/​ et cliquez sur « Download ». Vous devez sélectionner un site miroir (préférablement un situé près de vous) et choisir votre plateforme (OS X, Windows ou Linux). Téléchargez le fichier et lancez-le afin de compléter l’installation. Vous pouvez garder les paramètres d’installation par défaut. Avant de débuter cet atelier, vous devez installer les logiciels R et R Studio sur votre ordinateur personnel. Pour obtenir le logiciel R, rendez-vous au http://​www.r-project.org/​ et cliquez sur « Download ». Vous devez sélectionner un site miroir (préférablement un situé près de vous) et choisir votre plateforme (OS X, Windows ou Linux). Téléchargez le fichier et lancez-le afin de compléter l’installation. Vous pouvez garder les paramètres d’installation par défaut.
  
 Pour installer R Studio, rendez-vous au http://​www.rstudio.com/​ et sélectionnez R Studio à partir de l’onglet « Products tab ». Cliquez sur la version en source libre (//i.e.// open source) du « R Studio Desktop » et sélectionnez votre plateforme pour le télécharger. Lancez le fichier d’installation afin de compléter l’installation. Encore une fois, vous pouvez garder les paramètres d’installation par défaut. Pour installer R Studio, rendez-vous au http://​www.rstudio.com/​ et sélectionnez R Studio à partir de l’onglet « Products tab ». Cliquez sur la version en source libre (//i.e.// open source) du « R Studio Desktop » et sélectionnez votre plateforme pour le télécharger. Lancez le fichier d’installation afin de compléter l’installation. Encore une fois, vous pouvez garder les paramètres d’installation par défaut.
  
-===== Qu’est-ce que le logiciel R ? ===== +===== Objectifs d'​apprentissage ​===== 
-est un langage de programmation en source libre conçu pour l'​analyse statistique,​ l'​analyse de données ​et la visualisation de données. +  - Comprendre ce que sont R et RStudio 
-===== Pourquoi ​utiliser R ? =====+  - Utiliser R comme une calculatrice 
 +  - Manipuler les objets dans R 
 +  - Installer et utiliser ​les packages ​R
  
-{{::​operating_systems.png?​50|}} ​ {{::​open_source.png?​100|}} {{::​the_why_r_plot_2.png?​200|}}+===== 1Comprendre ce que sont R et RStudio =====
  
-R est en source ​libre ! Ça signifie que ce logiciel est libre et gratuit et constamment mis à jour et amélioré.+==== Qu'​est-ce que R? ==== 
 +---- 
 +R est un langage de programmation [[https://​fr.wikipedia.org/​wiki/​Open_source|open ​source]] conçu pour l'​analyse statistique,​ l'​exploration ​et la visualisation de données.
  
-R est compatible avec la majorité des système d'​exploitation, ​ce qui rend le partage de codes R facile. De plusle langage R permet d'​entrer en contact avec des gens de divers horizons ​à travers le monde et avec différents systèmes d'​exploitation.+==== Pourquoi utiliser R? ==== 
 +---- 
 +  * R est en source libre ! Ça signifie que ce logiciel est libregratuit et constamment mis à jour et amélioré.
  
-peut créer ​des tableaux, produire des graphiques et faire des analyses statistiques, le tout au sein du même logiciel. Avec R, il devient inutile ​d'utiliser plus d'un logiciel pour la gestion de vos donnéesTout est possible avec un seul logiciel !+  * est compatible avec la majorité ​des système d'​exploitationce qui rend le partage de codes facile. De plusle langage R permet ​d'entrer en contact avec des gens de divers horizons à travers le monde et avec différents systèmes ​d'exploitation.
  
-De plus en plus de scientifiques utilisent ​chaque année. Ses capacités sont en augmentation constante ​et vont continuer dans cette direction au fil des annéesCela signifie également qu'il y a une grande communauté en ligne qui peut vous donner ​un coup de main lorsque vous rencontrez un problème dans R.+  * peut créer des tableaux, produire des graphiques ​et faire des analyses statistiques,​ le tout au sein du même logicielAvec R, il devient inutile d'​utiliser plus d'un logiciel pour la gestion ​de vos donnéesTout est possible avec un seul logiciel !
  
-==== Utiliser R Studio ==== +  * De plus en plus de scientifiques utilisent ​chaque annéeSes capacités sont en augmentation constante ​et vont continuer dans cette direction au fil des annéesCela signifie également qu'il y a une grande communauté en ligne qui peut vous donner un coup de main lorsque ​vous rencontrez un problème dans R.
-R Studio est un environnement ​de développement intégré pour R. Ça signifie que c'est un endroit où on peut utiliser le langage R, visualiser des tableaux ​et des figures et même réaliser une multitude d'​analyses statistiquesIl est recommandé d'utiliser R Studio au lieu de la simple ​ligne de commande, car plusieurs options de visualisation et outils (que vous apprendrez au cours de cet atelier) sont disponibles avec Studio. +
-\\ +
------ +
-== Défi 1 ==+
  
-Lancer ​R Studio+{{::​operating_systems.png?​100|}} ​   {{::​open_source.png?​200|}} ​    ​{{::​the_why_r_plot_2.png?​400|}} 
 + 
 +==== Utiliser RStudio ==== 
 +---- 
 +RStudio est un environnement de développement intégré pour R. Ça signifie que c'est un endroit où on peut utiliser le langage R, visualiser des tableaux et des figures et même réaliser une multitude d'​analyses statistiques. Il est recommandé d'​utiliser ​R Studio ​au lieu de la simple ligne de commande, car plusieurs options de visualisation et outils (que vous apprendrez au cours de cet atelier) sont disponibles avec RStudio. 
 +---- 
 +== Défi 1 == 
 +Lancer RStudio
  
 {{:​logo_rstudio.jpg?​200|R Studio logo}} {{:​logo_rstudio.jpg?​200|R Studio logo}}
------ 
-\\ 
-Note pour les utilisateurs Windows: si la restriction:​ "​Unable to write on disk" apparaît quand vous ouvrez R Studio ou que vous installez une bibliothèque,​ fermer l'​application. Cliqué avec le bouton droit de la souris sur l'​icône R Studio et choisissez “Execute as administrator” pour ouvrir R Studio. ​ 
  
-Lorsque ​vous lancez ​R Studio, le premier élément que vous voyez à la gauche de l'​écran est la console. C'est à cet endroit que vous allez travailler pour le reste de cet atelier d'​introduction à R. L'​exemple suivant illustre le format du texte qui apparaît typiquement à l'​écran : +**Note pour les utilisateurs Windows**: si la restriction:​ "​Unable to write on disk" apparaît quand vous ouvrez ​R Studio ​ou que vous installez une bibliothèque,​ fermer l'​application. Cliqué avec le bouton droit de la souris sur l'​icône R Studio et choisissez “Execute as administrator” pour ouvrir R Studio.  
 +---- 
 +**La console** 
 + 
 +Lorsque vous lancez RStudio, le premier élément que vous voyez à la gauche de l'​écran est la console. C'est à cet endroit que vous allez travailler pour le reste de cet atelier d'​introduction à R.  
 + 
 +{{:​Rstudioconsole_fleche.png?​800|R Studio console}} 
 + 
 +L'​exemple suivant illustre le format du texte qui apparaît typiquement à l'​écran : 
 <file rsplus| Illustration du texte dans la console R> <file rsplus| Illustration du texte dans la console R>
-commande (input) +sortie 
-[1] sortie ​(output)+[1] "Ceci est la sortie"
 </​file>​ </​file>​
  
Line 62: Line 100:
 [6] 6 7 8 9 10 [6] 6 7 8 9 10
 </​file>​ </​file>​
-==== R comme calculatrice =====+===== 2. Utiliser ​R comme une calculatrice =====
 La première chose à savoir à propos de la console R est qu'on peut l'​utiliser comme calculatrice. La première chose à savoir à propos de la console R est qu'on peut l'​utiliser comme calculatrice.
 <file rsplus| Addition>​ <file rsplus| Addition>​
-> 1+1+> 1 + 1
 [1] 2 [1] 2
 </​file> ​ </​file> ​
  
 <file rsplus| Soustraction>​ <file rsplus| Soustraction>​
-> 10-1+> 10 - 1
 [1] 9 [1] 9
 </​file> ​ </​file> ​
  
 <file rsplus| Multiplication>​ <file rsplus| Multiplication>​
-> 2*2+> 2 * 2
 [1] 4 [1] 4
 </​file>​ </​file>​
  
 <file rsplus| Division>​ <file rsplus| Division>​
-> 8/2+> 8 / 2
 [1] 4 [1] 4
 </​file>​ </​file>​
Line 89: Line 128:
 </​file> ​   </​file> ​  
  
 +-----
 == Défi 2 == == Défi 2 ==
 +Utilisez R pour effectuer l'​opération suivante : 2 + 16 x 24 - 56
  
-Répondez à la question d'​habileté suivante dans la console de R Studio : 2 + 16 x 24 - 56 +++Défi 2 : Solution| \\ ''>​ 2 + 16 * 24 - 56\\
- +
-++Défi 2 : Solution| \\ ''>​ 2+16*24-56\\+
 [1] 330''​ ++ \\ [1] 330''​ ++ \\
 +-----
 == Défi 3 == == Défi 3 ==
  
-Répondez à la question d'habileté ​suivante ​dans la console de R Studio. +Utilisez R pour effectuer l'opération ​suivante\\ 
-Faites attention à la priorité des opérations !\\ +2 + 16 x 24 - 56 / ( 2 + 1) - 457 
-2 + 16 x 24 - 56 / ( 2 + 1) - 457+
  
-++Défi 3 : Solution| \\ ''>​ 2+16x24-56/​(2+1)-457\\+//Faites attention à la priorité des opérations!//​ 
 + 
 +++Défi 3 : Solution| \\ ''>​ 2 + 16 * 24 - 56 / (2 + 1) - 457\\
 [1] -89.66667''​ ++ \\ [1] -89.66667''​ ++ \\
  
 Prenez note que R respecte //​toujours//​ la priorité des opérations. Prenez note que R respecte //​toujours//​ la priorité des opérations.
-\\ 
 ----- -----
 **Truc R**  ​ **Truc R**  ​
Line 113: Line 152:
  
 {{::​arrow_keys.png?​100|Utilisez les flèches pour revenir aux commandes précédentes.}} {{::​arrow_keys.png?​100|Utilisez les flèches pour revenir aux commandes précédentes.}}
 +
 ----- -----
-\\ 
 == Défi 4 == == Défi 4 ==
  
 Quelle est l'aire d'un cercle avec un rayon de 5 cm ? Quelle est l'aire d'un cercle avec un rayon de 5 cm ?
  
-++Défi 4 : Solution| \\ Rappel : $A_{cercle} = \pi r^2$ \\ ''>​ 3.1416*5^2\\ +++Défi 4 : Solution| \\ Rappel : $A_{cercle} = \pi r^2$ \\ ''>​ 3.1416 * 5^2\\ 
-[1] 78.54''​ \\ ou \\ ''>​ pi*5^2\\ ​+[1] 78.54''​ \\ ou \\ ''>​ pi * 5^2\\ 
 [1] 78.53982''​++ \\ [1] 78.53982''​++ \\
-===== Le concept d’objet dans R ===== 
  
 +===== 3. Manipuler les objets dans R =====
 +
 +==== Objet ====
 +----
 Jusqu’à maintenant, vous avez appris à utiliser R comme calculatrice afin d’obtenir différentes valeurs numériques. Cependant, si vous devez utiliser certaines valeurs ou calculs fréquemment,​ ça peut rapidement devenir ennuyeux de toujours devoir réécrire le même code dans la console. Le concept d’objet permet d’enregistrer certaines étapes afin de vous faire sauver du temps. Jusqu’à maintenant, vous avez appris à utiliser R comme calculatrice afin d’obtenir différentes valeurs numériques. Cependant, si vous devez utiliser certaines valeurs ou calculs fréquemment,​ ça peut rapidement devenir ennuyeux de toujours devoir réécrire le même code dans la console. Le concept d’objet permet d’enregistrer certaines étapes afin de vous faire sauver du temps.
  
-R est un langage de programmation par objet (//​object-oriented programming language//​). Ça signifie qu’on peut allouer ​ un nom à des valeurs qu’on a créées afin de les enregistrer dans un espace de travail. Un objet est composé de trois parties : 1) une valeur d’intérêt,​ 2) un identifiant et 3) l’opérateur d’assignation. La valeur d’intérêt peut être à peu près de n’importe quelle nature : un nombre, le résultat d’un calcul, une chaîne de caractères,​ un tableau de données, un graphique ou une fonction. L’identifiant est le nom qui est assigné à la valeur d’intérêt. Lorsqu’on veut faire référence à cette valeur, il suffit simplement de taper son nom à la console et R va afficher cette valeur. Les identifiants peuvent seulement inclure des lettres, des chiffres, des points et des traits de soulignement (//​underscore//​). Ils doivent toujours débuter par une lettre. L’opérateur d’assignation ressemble à une flèche (''​%%<​-%%''​) et est utilisé afin de lier la valeur d’intérêt à son identifiant. Le code suivant illustre le concept d’objet :+R est un langage de programmation par objet (//​object-oriented programming language//​). Ça signifie qu’on peut allouer ​ un nom à des valeurs qu’on a créées afin de les enregistrer dans un espace de travail. Un objet est composé de trois parties : 1) une valeur d’intérêt,​ 2) un identifiant et 3) l’opérateur d’assignation. ​ 
 + 
 +  - La valeur d’intérêt peut être à peu près de n’importe quelle nature : un nombre, le résultat d’un calcul, une chaîne de caractères,​ un tableau de données, un graphique ou une fonction. ​ 
 +  - L’identifiant est le nom qui est assigné à la valeur d’intérêt. Lorsqu’on veut faire référence à cette valeur, il suffit simplement de taper son nom à la console et R va afficher cette valeur. Les identifiants peuvent seulement inclure des lettres, des chiffres, des points et des traits de soulignement (//​underscore//​). Ils doivent toujours débuter par une lettre. ​ 
 +  - L’opérateur d’assignation ressemble à une flèche (''​%%<​-%%''​) et est utilisé afin de lier la valeur d’intérêt à son identifiant. ​ 
 + 
 +Le code suivant illustre le concept d’objet :
  
 <file rsplus| Illustration du concept d’objet>​ <file rsplus| Illustration du concept d’objet>​
-#​Commençons par créer un objet nommé ​moyenne.x.+#​Commençons par créer un objet nommé ​moy_x.
 #Le symbole # est utilisé dans R afin d’indiquer les commentaires à l’intérieur d’un code. #Le symbole # est utilisé dans R afin d’indiquer les commentaires à l’intérieur d’un code.
 #Ces lignes ne sont pas traitées par R. #Ces lignes ne sont pas traitées par R.
 #C’est très important d’ajouter des commentaires à un code, #C’est très important d’ajouter des commentaires à un code,
 #car ça permet à d’autres personnes de mieux le comprendre et de l’utiliser. #car ça permet à d’autres personnes de mieux le comprendre et de l’utiliser.
-moyenne.x ​<- (2+6)/2+moy_x <- (2 + 6) / 2
 #En tapant le nom de l’objet dans la console, R retourne la valeur de l’objet. #En tapant le nom de l’objet dans la console, R retourne la valeur de l’objet.
-moyenne.x +moy_x 
-#! [1]  4+[1]  4
 </​file>​ </​file>​
  
-Dans cet exemple, ''​(2+6)/​2''​ est la valeur qu’on souhaite enregistrer en tant qu’objet. L’identifiant "moyenne.x" est assigné à cette valeur. En tapant ''​moyenne.x''​ à la console, R retourne la valeur du calcul (//i.e.// 4). Il faut être très scrupuleux lorsqu’on entre l’identifiant à la console, car R fait la différence entre les lettres minuscules et majuscules : écrire ''​moyenne.x''​ n’est pas la même chose qu’écrire ''​MOYENNE.X''​. On peut voir que l’opérateur d’assignation ''​%%<​-%%''​ crée un lien explicite entre la valeur d’intérêt et son identifiant. L’opérateur d’assignation pointe toujours de la valeur vers l’identifiant. Si votre clavier est configuré en anglais la combinaison de touche "Alt + - " vous permettra d'​insérer directement l'​opérateur ''​%%<​-%%''​. Il est également possible d’utiliser le symbole d’égalité ''​=''​ comme opérateur d’assignation,​ mais [[http://​stackoverflow.com/​questions/​1741820/​assignment-operators-in-r-and| c’est préférable de ne pas l’utiliser]]. Le symbole d’égalité est aussi utilisé pour d’autres opérations dans R, ce qui pourrait causer des problèmes lorsqu’on l’utilise comme opérateur d’assignation. Finalement, imaginez que l'​opérateur ''​%%<​-%%''​ et ''​%%=%%''​ ont une priorité d'​opération :+Dans cet exemple, ''​(2 + 6) / 2''​ est la valeur qu’on souhaite enregistrer en tant qu’objet. L’identifiant "moy_x" est assigné à cette valeur. En tapant ''​moy_x''​ à la console, R retourne la valeur du calcul (//i.e.// 4). Il faut être très scrupuleux lorsqu’on entre l’identifiant à la console, car R fait la différence entre les lettres minuscules et majuscules : écrire ''​moy_x''​ n’est pas la même chose qu’écrire ''​MOY_X''​. On peut voir que l’opérateur d’assignation ''​%%<​-%%''​ crée un lien explicite entre la valeur d’intérêt et son identifiant. L’opérateur d’assignation pointe toujours de la valeur vers l’identifiant. Si votre clavier est configuré en anglais la combinaison de touche "Alt + - " vous permettra d'​insérer directement l'​opérateur ''​%%<​-%%''​. Il est également possible d’utiliser le symbole d’égalité ''​=''​ comme opérateur d’assignation,​ mais [[http://​stackoverflow.com/​questions/​1741820/​assignment-operators-in-r-and| c’est préférable de ne pas l’utiliser]]. Le symbole d’égalité est aussi utilisé pour d’autres opérations dans R, ce qui pourrait causer des problèmes lorsqu’on l’utilise comme opérateur d’assignation. Finalement, imaginez que l'​opérateur ''​%%<​-%%''​ et ''​%%=%%''​ ont une priorité d'​opération :
  
 <file rsplus| Priorité avec l’opérateur d’assignation et le symbole d’égalité > <file rsplus| Priorité avec l’opérateur d’assignation et le symbole d’égalité >
Line 152: Line 200:
  
 </​file>​ </​file>​
 +----
 +=== Bonnes pratiques du code R ===
  
 +**Nom**:
 +  * Essayez d'​avoir des noms courts et explicites pour vos variables. Nommer une variable ''​var''​ n'est pas très instructif.
 +  * Utilisez un trait de soulignement ''​_''​ pour séparer les mots d'un nom ou essayez d'​être constant!
 +  * Évitez les noms d'​objets de fonction qui existe dans R (e.g. ''​c''​ ou ''​table''​)
  
------ +**Espace**
-**Truc R**+  * Ajoutez des espaces autour de tous les opérateurs (''​='',​ ''​+'',​ ''​-'',​ ''<​-'',​ etc.) pour rendre le code plus lisible 
 +  * Mettez un espace après une virgule, mais jamais avant (comme en français).
  
-Essayez de choisir des noms explicites pour vos objets. C’est une bonne habitude à prendre et ça vous permet de comprendre rapidement ce qu’un objet représente. Nommer un objet ''​variable''​ ou ''​données''​ n’est pas très informatif ! 
------ 
-\\ 
 ----- -----
 == Défi 5 == == Défi 5 ==
  
-> Créez un objet avec une valeur de 1 + 1.718282 (//i.e.// le logarithme naturel) et nommez le ''​log.nat''​.+> Créez un objet avec une valeur de 1 + 1.718282 (//i.e.// le nombre d'​Euler) et nommez le ''​valeur_euler''​.
 ++++ ++++
 Défi 5 : Solution| Défi 5 : Solution|
 <code rsplus> <code rsplus>
-log.nat ​<- 1 + 1.718282+valeur_euler ​<- 1 + 1.718282
 </​code>​ </​code>​
 ++++ ++++
------ 
-\\ 
 ----- -----
 == Défi 6 == == Défi 6 ==
Line 181: Line 231:
 ''​Symbole inattendu dans %%"​%%votre nom d’objet%%"​%%''​. ''​Symbole inattendu dans %%"​%%votre nom d’objet%%"​%%''​.
 ++++ ++++
------ 
-\\ 
 ----- -----
 **Truc R** **Truc R**
  
-La touche « Tabulation » permet de compléter automatiquement les noms d’objets. Ça accélère l’entrée des commandes et ça évite les erreurs de frappe. Par exemple, si vous tapez ''​log''​ et appuyez sur « Tabulation » ensuite, vous allez voir une liste d’objets ou de fonctions débutant par ''​log''​. Sélectionnez ''​log.nat''​ (l’objet que vous venez de créer) et appuyez sur « Entrée ». L’identifiant ''​log.nat''​ apparaît maintenant dans la console.+La touche « Tabulation » permet de compléter automatiquement les noms d’objets. Ça accélère l’entrée des commandes et ça évite les erreurs de frappe. Par exemple, si vous tapez ''​val''​ et appuyez sur « Tabulation » ensuite, vous allez voir une liste d’objets ou de fonctions débutant par ''​val''​. Sélectionnez ''​valeur_euler''​ (l’objet que vous venez de créer) et appuyez sur « Entrée ». L’identifiant ''​valeur_euler''​ apparaît maintenant dans la console. 
 + 
 +==== Types de structures de données en R ====
 ----- -----
-\\ 
-==== Les différentes structures de données dans R ==== 
  
- +Le logiciel R est un outil très puissant pour l’analyse des données. Les données existent sous plusieurs formes, mais peuvent être regroupées en catégories distinctes. R classifie les données selon la nature des valeurs contenues dans un objet. La figure suivante illustre les types de données ​couramment ​rencontrés dans R.
-Le logiciel R est un outil très puissant pour l’analyse des données. Les données existent sous plusieurs formes, mais peuvent être regroupées en catégories distinctes. R classifie les données selon la nature des valeurs contenues dans un objet. La figure suivante illustre les types de données ​communément ​rencontrés dans R.+
  
 {{ :: imageobjr.png?​500 |Types d’objets dans R}} {{ :: imageobjr.png?​500 |Types d’objets dans R}}
  
-Le premier type d’objet est le vecteur. C’est un des objets les plus communs dans R. Un vecteur est une entité constituée d’une liste de valeurs semblables. Toutes les valeurs d’un vecteur doivent avoir le même mode. Les principaux modes dans R sont numérique, caractère et logique. Les vecteurs numériques sont composés de chiffres seulement. Les vecteurs de caractères sont généralement composés de chaînes de caractères ou d’un mélange de chaînes de caractères et de valeurs numériques et logiques. Il est absolument nécessaire d’utiliser les guillemets ''​%%"​ "​%%''​ afin de délimiter les chaînes de caractères. Les vecteurs logiques sont composés des mots ''​TRUE''​ et ''​FALSE''​ seulement. Un vecteur composé d’un seul élément (généralement une constante) est appelé un vecteur atomique.+Le premier type d’objet est le **vecteur**. C’est un des objets les plus communs dans R. Un vecteur est une entité constituée d’une liste de valeurs semblables. Toutes les valeurs d’un vecteur doivent avoir le même mode (ou classe). Les principaux modes dans R sont **numérique, caractère** et **logique**. Les vecteurs numériques sont composés de chiffres seulement. Les vecteurs de caractères sont généralement composés de chaînes de caractères ou d’un mélange de chaînes de caractères et de valeurs numériques et logiques. Il est absolument nécessaire d’utiliser les guillemets ''​%%"​ "​%%''​ afin de délimiter les chaînes de caractères. Les vecteurs logiques sont composés des mots ''​TRUE''​ et ''​FALSE''​ seulement. Un vecteur composé d’un seul élément (généralement une constante) est appelé un vecteur atomique.
  
-Avant d’apprendre à créer différents types de vecteurs, regardons comment un vecteur est créé de manière générique. Si vous vous rappelez ce que vous venez tout juste d’apprendre,​ vous devez premièrement avoir une valeur d’intérêt que vous voulez intégrer dans un vecteur et ensuite le lier à un identifiant avec l’opérateur d’assignation (//i.e.// créer un objet). Lorsque vous avez plus d’une valeur dans un vecteur, il est nécessaire d’indiquer au logiciel R qu’il faut regrouper ces valeurs au sein d’un même vecteur. Pour ce faire, il faut utiliser la fonction ''​c''​. Ne vous en faites pas ! Vous allez bientôt apprendre ce qu’est une fonction dans une des sections suivantes. Pour l’instant,​ sachez que vous devez mettre vos valeurs que vous souhaitez avoir dans un vecteur entre parenthèses tout juste après la lettre ''​c''​ dans la console de R. Le format est le suivant : ''​nom.du.vecteur %%<-%% c(valeur1, valeur2, valeur3, ...)''​. La fonction ''​c()''​ signifie combiner ou concaténer. C’est une fonction facile et très utile, alors rappelez-vous en !+Avant d’apprendre à créer différents types de vecteurs, regardons comment un vecteur est créé de manière générique. Si vous vous rappelez ce que vous venez tout juste d’apprendre,​ vous devez premièrement avoir une valeur d’intérêt que vous voulez intégrer dans un vecteur et ensuite le lier à un identifiant avec l’opérateur d’assignation (//i.e.// créer un objet). Lorsque vous avez plus d’une valeur dans un vecteur, il est nécessaire d’indiquer au logiciel R qu’il faut regrouper ces valeurs au sein d’un même vecteur. Pour ce faire, il faut utiliser la fonction ''​c()''​. Ne vous en faites pas ! Vous allez bientôt apprendre ce qu’est une fonction dans une des sections suivantes. Pour l’instant,​ sachez que vous devez mettre vos valeurs que vous souhaitez avoir dans un vecteur entre parenthèses tout juste après la lettre ''​c()''​ dans la console de R. Le format est le suivant : ''​nom.du.vecteur %%<-%% c(valeur1, valeur2, valeur3, ...)''​. La fonction ''​c()''​ signifie combiner ou concaténer. C’est une fonction facile et très utile, alors rappelez-vous en ! 
 + 
 +Vous connaissez la méthode générique pour créer un vecteur dans R. Regardons maintenant comment générer différents types de vecteurs (//i.e.// de différents modes). 
 + 
 +<file rsplus| Créer des vecteurs dans R> 
 +#Créez un vecteur numérique avec la fonction c (qui signifie combiner ou concaténer). 
 +num_vecteur <- c(1, 4, 3, 98, 32, -76, -4) 
 + 
 +#Créez un vecteur de caractères. N’oubliez pas les guillemets !  
 +car_vecteur <- c("​bleu",​ "​rouge",​ "​vert"​) 
 + 
 +#Créez un vecteur logique ou booléen. N’utilisez pas les guillemets sinon R va considérer les éléments 
 +#comme des chaînes de caractères. 
 +bool_vecteur <- c(TRUE, TRUE, FALSE) 
 + 
 +#C’est aussi possible d’utiliser les abréviations pour les vecteurs logiques. 
 +bool_vecteur2 <- c(T, T, F) 
 +</​file>​
  
 ----- -----
Line 209: Line 273:
 </​code>​ </​code>​
 ++++ ++++
------ 
-\\ 
-Vous connaissez la méthode générique pour créer un vecteur dans R. Regardons maintenant comment générer différents types de vecteurs (//i.e.// de différents modes). 
- 
-<file rsplus| Créer des vecteurs dans R> 
-#Créez un vecteur numérique avec la fonction c (qui signifie combiner ou concaténer). 
-vecteur.num<​-c(1,​ 2, 5, 3, 6, -2, 4) 
-#Créez un vecteur de caractères. N’oubliez pas les guillemets !  
-vecteur.car<​-c("​bleu",​ "​rouge",​ "​vert"​) 
-#Créez un vecteur logique. N’utilisez pas les guillemets sinon R va considérer les éléments 
-#comme des chaînes de caractères. 
-vecteur.logic<​-c(TRUE,​ TRUE, FALSE) 
-#C’est aussi possible d’utiliser les abréviations pour les vecteurs logiques. 
-vecteur.logic2<​-c(T,​ T, F) 
-</​file>​ 
- 
-\\ 
 ----- -----
 **Truc R**  ​ **Truc R**  ​
  
-Utilisez la fonction ''​dput''​ pour obtenir l'​inverse,​ c'​est-à-dire le contenue d'un objet sous forme de vecteur. Par exemple : +Utilisez la fonction ''​dput()''​ pour obtenir l'​inverse,​ c'​est-à-dire le contenue d'un objet sous forme de vecteur. Par exemple : 
 <code rsplus> <code rsplus>
 > impair <- c(1, 3, 5, 7, 9) > impair <- c(1, 3, 5, 7, 9)
 > impair > impair
 [1] 1 3 5 7 9 [1] 1 3 5 7 9
 +#  La réponse que R retourne en inscrivant ''​impair''​ n’est pas directement utilisable
 +# (puisqu’elle n’est pas dans la fonction ''​c()''​ et les chiffres ne sont pas entourés de virgules).
  
 > dput(impair) > dput(impair)
 c(1, 3, 5, 7, 9) c(1, 3, 5, 7, 9)
 +
 +# La sortie peut être copiée et collée pour créer un nouvel objet en utilisant la fonction structure()
 +> structure(c(1,​ 3, 5, 7, 9))
 +[1] 1 3 5 7 9
 </​code>​ </​code>​
  
-Cette démonstration n’est peut-être pas convaincante,​ mais peut s’avérer fort utile lors de la manipulation de données! ​Le résultat que R donne dans la console peut être copié et collé pour créer un nouvel objet en utilisant la fonction ''​dput'​'​. ​À l’inversela réponse que R retourne en inscrivant ''​impair''​ n’est pas directement utilisable (puisqu’elle n’est pas dans la fonction ''​c()''​ et les chiffres ne sont pas entourés de virgules).+Cette démonstration n’est peut-être pas convaincante,​ mais ces fonctions peuvent ​s’avérer fort utiles ​lors de la manipulation de données! ​Notamment si vous souhaitez fournir un exemple reproductible ​dans le cas d'une question sur [[https://​stackoverflow.com/|Stack Overflow]]par exemple.
 ----- -----
-\\ 
- 
  
-Ce que vous avez appris dans la première section est également valide pour les vecteurs : les vecteurs peuvent être utilisés dans des calculs. La seule différence est que lorsqu’un vecteur a plus d’un élément, l’opération est appliquée à tous les éléments du vecteur.+Ce que vous avez appris dans la première section est également valide pour les vecteurs : les vecteurs peuvent être utilisés dans des calculs. La seule différence est quelorsqu’un vecteur a plus d’un élément, l’opération est appliquée à tous les éléments du vecteur.
 L’exemple suivant clarifie ceci. L’exemple suivant clarifie ceci.
  
 <file rsplus| Calculs avec des vecteurs>​ <file rsplus| Calculs avec des vecteurs>​
 #Créez deux vecteurs numériques. #Créez deux vecteurs numériques.
-x <- 1:5+x <- 1:5
 # Rappelez-vous que le symbole '':'',​ lorsqu’utilisé avec des chiffres, est l’opérateur de séquence. # Rappelez-vous que le symbole '':'',​ lorsqu’utilisé avec des chiffres, est l’opérateur de séquence.
 # Ça indique à R de créer une série qui augmente de 1. # Ça indique à R de créer une série qui augmente de 1.
 # C’est équivalent à écrire x <- c(1, 2, 3, 4, 5) # C’est équivalent à écrire x <- c(1, 2, 3, 4, 5)
 # Une autre façon équivalente est : x <- c(1:5). # Une autre façon équivalente est : x <- c(1:5).
-y <- 6+ 
 +y <- 6 
 # Faisons la somme des deux vecteurs. # Faisons la somme des deux vecteurs.
 # 6 est ajouté à tous les éléments du vecteur x. # 6 est ajouté à tous les éléments du vecteur x.
-x + y +x + y 
-#! [1]  7 8 9 10 11 +[1]  7 8 9 10 11 
-#​Multiplions x par lui-même+ 
-x * x +# Multiplions x par y
-#! [1]  ​1 4 9 16 25 +x * y 
-#C’est la même chose que x au carré ! +[1]  ​6 12 18 24 30 
-x^2 +
-#! [1]  1 4 9 16 25+
 </​file>​ </​file>​
 +----
 +Un autre type d’objet couramment utilisé en écologie est le data frame (c-à-d. tableau de données). Un data frame est un groupe de vecteurs de la même longueur (//i.e.// avec le même nombre d’éléments). Les variables sont toujours représentées en colonnes et les observations,​ cas, individus, sites ou répétitions sont toujours représentés en lignes. Un data frame peut être composé de plusieurs modes, mais une colonne doit toujours contenir le même mode. C’est sous ce format que la plupart des données écologiques sont enregistrées. L’exemple suivant présente un jeu de données fictif représentant quatre sites où le pH du sol et le nombre d’espèces ont été mesurés. On y trouve également une colonne de traitement (fertilisé ou non). Regardons plus en détail comment créer un tel tableau de données.
 +
 +^ site_id ^ pH_sol ^ num_sp ^ traitement ^
 +| A1.01 | 5.6 | 17 | Fertilisé |
 +| A1.02 | 7.3 | 23 | Fertilisé |
 +| B1.01 | 4.1 | 15 | Non Fertilisé |
 +| B1.02 | 6.0 | 17 | Non Fertilisé |
  
-Un autre type d’objet couramment utilisé en écologie est le tableau de donnéesUn tableau de données est un groupe de vecteurs de la même longueur (//i.e.// avec le même nombre d’éléments). Les variables sont toujours représentées en colonnes et les observationscasindividus, sites ou répétitions sont toujours représentés en lignesUn tableau de données peut être composé de plusieurs modes, mais une colonne doit toujours contenir le même mode. C’est sous ce format que la plupart des données écologiques sont enregistréesL’exemple suivant présente un jeu de données fictif représentant quatre sites où le pH du sol et le nombre d’espèces ont été mesurés. On y trouve également une colonne de traitement ​(fertilisé ou non). Regardons plus en détail comment créer un tel tableau de données.+NB. Les noms des colonnes et leur contenu n'ont ni accentni d'​espaceni caractères spéciaux puisque R préfère une seule suite de caractères comme titreAinsi, num_sp représente bien '​Nombre d'​espèces'​, mais R préfère ​la forme '​num_sp'​Il en va de même pour le contenu ​du tableau ​(pas '​Fertilisé',​ mais bien '​Fert'​). 
  
-^ Code_Site ^ pH.sol ^ n.especes ^ Traitement ^ +<file rsplus| Création d’un data frame>  
-A1.01 | 5.6 | 17 | Fertilise | +# On commence par créer les vecteurs
-A1.02 | 7.3 | 23 | Fertilise | +site_id <- c("A1.01", "A1.02", "B1.01", "B1.02") 
-B1.01 | 4.1 | 15 | Pas Fertilise | +pH_sol <- c(5.6, 7.3, 4.1, 6.0
-| B1.02 | 6.0 17 | Pas Fertilise |+num_sp <- c(17, 23, 15, 7) 
 +traitement <- c("​Fert",​ "​Fert",​ "​Non_fert",​ "​Non_fert"​)
  
-NBLes noms des colonnes n'ont pas d'​accent ni d'​espace puisque R préfère une seule suite de caractères comme titreAinsin.especes représente bien '​Nombre d'​espèces'​mais R préfère la première forme '​n.especes'​. Il en va de même pour le contenu du tableau (pas '​Fertilisé'​mais bien '​Fertilise'​)+# On peut grouper tous ces vecteurs en un data frame avec la fonction data.frame(). 
 +mon_df <- data.frame(site_idpH_solnum_sptraitement)
  
-<file rsplus| Création d’un tableau de données>​  +# On l’affiche à la console! 
-#On commence par créer les vecteurs. +mon_df
-Code_Site<​-c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​) +
-pH.sol<​-c(5.6,​ 7.3, 4.1, 6.0) +
-n.especes<​-c(17,​ 23, 15, 7) +
-Traitement<​-c("​Fertilise",​ "​Fertilise",​ "​Pas.Fertilise",​ "​Pas.Fertilise"​) +
-#On peut grouper tous ces vecteurs en un tableau de données avec la fonction data.frame. +
-mon.premier.tab<​-data.frame(Code_Site,​ pH.sol, n.especes, Traitement) +
-#On l’affiche à la console! +
-mon.premier.tab+
 </​file>​ </​file>​
  
-Les autres types d’objets pour stocker des données qu’on retrouve dans R sont les matrices, les tableaux (//i.e.// array en anglais) et les listes. Une matrice est très similaire à un tableau de données ​à l’exception que toutes les cellules de la matrice doivent être du même mode (le plus souvent numérique). Un tableau ​est similaire à une matrice, mais peut avoir plus de deux dimensions. ​Ces tableaux ​sont surtout utilisés pour des calculs avancés tels que des simulations numériques et des tests de permutations. Une liste est un groupement de plusieurs types d’objets différents. Par exemple, une liste pourrait comprendre un vecteur, un tableau de données et une matrice au sein du même objet. +----- 
-===== Indexer des objets dans R =====+**Truc R**   
 + 
 +Voici la fonction ''​dput()''​ dans un exemple plus concret:  
 +<code rsplus>​ 
 +> dput(mon_df) 
 +structure(list(site_id = c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​ 
 +), pH_sol = c(5.6, 7.3, 4.1, 6), num_sp = c(17, 23, 15, 7), traitement = c("​Fert",​  
 +"​Fert",​ "​Non_fert",​ "​Non_fert"​)),​ class = "​data.frame",​ row.names = c(NA, -4L)) 
 + 
 +# Il est possible de reconstruire le data frame initial (avec certaines métadonnées associées, telles que la classe des variables par exemple) en copiant-collant la sortie précédente 
 +> structure(list(site_id = c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​ 
 +), pH_sol = c(5.6, 7.3, 4.1, 6), num_sp = c(17, 23, 15, 7), traitement = c("​Fert",​  
 +"​Fert",​ "​Non_fert",​ "​Non_fert"​)),​ class = "​data.frame",​ row.names = c(NA, -4L)) 
 + 
 +</​code>​ 
 +---- 
 +Les autres types d’objets pour stocker des données qu’on retrouve dans R sont les matrices, les tableaux (//i.e.// array en anglais) et les listes. Une matrice est très similaire à un data frame à l’exception que toutes les cellules de la matrice doivent être du même mode. Un array est similaire à une matrice, mais peut avoir plus de deux dimensions. ​Les arrays ​sont surtout utilisés pour des calculs avancés tels que des simulations numériques et des tests de permutations. Une liste est un groupement de plusieurs types d’objets différents. Par exemple, une liste pourrait comprendre un vecteur, un tableau de données et une matrice au sein du même objet. 
 + 
 +==== Indexer des objets dans R ==== 
 +---- 
 +=== Indexer un vecteur===
  
 Lorsqu’on tape le nom d’un objet dans la console, R retourne l’objet en entier. Par contre, ce n’est pas pratique si l’objet est, par exemple, une énorme base de données avec des millions de lignes. Ça peut rapidement devenir difficile d’identifier des éléments précis d’un objet. R nous permet d’extraire certaines parties d’un objet en indexant ce dernier. Il suffit de spécifier la position des valeurs à l’intérieur d’un objet qu’on souhaite extraire à l’aide des crochets ''​[ ]''​. Le code suivant illustre le concept d’indexation des vecteurs. Lorsqu’on tape le nom d’un objet dans la console, R retourne l’objet en entier. Par contre, ce n’est pas pratique si l’objet est, par exemple, une énorme base de données avec des millions de lignes. Ça peut rapidement devenir difficile d’identifier des éléments précis d’un objet. R nous permet d’extraire certaines parties d’un objet en indexant ce dernier. Il suffit de spécifier la position des valeurs à l’intérieur d’un objet qu’on souhaite extraire à l’aide des crochets ''​[ ]''​. Le code suivant illustre le concept d’indexation des vecteurs.
  
 <file rsplus| Indexer un vecteur> <file rsplus| Indexer un vecteur>
-#Créons tout d’abord un vecteur numérique et un vecteur de caractères. +# Créons tout d’abord un vecteur numérique et un vecteur de caractères. 
-#Ce n’est pas nécessaire de faire cette étape si vous l’avez déjà fait dans un exercice précédent. +# Ce n’est pas nécessaire de faire cette étape si vous l’avez déjà fait dans un exercice précédent. 
-vecteur.num<​-c(1, ​2, 5, 36, -2, 4+> impair ​<- c(1, 3, 5, 79
-vecteur.car<​-c("​bleu",​ "​rouge",​ "​vert"​) + 
-#Extraire ​le troisième ​élément du vecteur numérique. +Extrayons ​le deuxième ​élément du vecteur numérique. 
- vecteur.num ​[3+> impair[2
-#! [1]  ​5 +[1]  ​
-Extraire tous les éléments du vecteur numérique ​sauf le troisième+ 
-vecteur.num ​[-3+Extrayons ​les 2ème et 4ème éléments du vecteur numérique. 
-#! [1]  ​1 ​ 2  ​3 ​ ​6 ​ -2  4 +> impair[c(2, 4)
-Extraire ​les premier et troisième ​éléments du vecteur ​de caractères+[1]  3 
-vecteur.car ​[c(1,3)] + 
-#! [1]  "​bleu" ​ "​vert"​ +Extrayons tous les éléments du vecteur ​numérique sauf les deux premières
-Extraire les premier et quatrième éléments du vecteur ​de caractères+> impair[c(-1, -2)] 
-#Il n’y a pas de quatrième ​valeur dans ce vecteur, donc R retourne une valeur nulle (i.e. NA). +[1] 5 7 9 
-#NA signifie 'Not available'​. + 
-vecteur.car [c(1,4)] +Si nous sélectionnons une position qui n'​existe pas dans le vecteur ​numérique. 
-#! [1]  "​bleu" ​ NA +impair[c(1,​6)] 
-#Extraire toutes les valeurs ​supérieures à 5 du vecteur numérique+[1] 1 NA 
-vecteur.num[vecteur.num ​5+# Il n’y a pas de sixième ​valeur dans ce vecteur, donc R retourne une valeur nulle (i.e. NA). 
-#! [1]  6 +# NA signifie 'Not available'​. 
-#Extraire tous les éléments correspondant exactement à « bleu » du vecteur de caractères. + 
-#Prenez note de l’utilisation du double signe d’égalité ==. +Nous pouvons également utiliser des conditions pour sélectionner des valeurs. 
-vecteur.car ​[vecteur.car ​== "​bleu"​] +> impair[impair ​4
-#! [1]  "​bleu"​+[1] 5 7 9 
 + 
 +# Nous pouvons procéder de même sur les vecteurs de caractère 
 +# Extraire tous les éléments correspondant exactement à « bleu » du vecteur de caractères. 
 +# Prenez note de l’utilisation du double signe d’égalité ==. 
 +> car_vecteur[car_vecteur ​== "​bleu"​] 
 +[1]  "​bleu"​ 
 </​file>​ </​file>​
-\\ 
 ----- -----
 == Défi 8 == == Défi 8 ==
  
-> a) Extraire la quatrième valeur du vecteur numérique ​vecteur.num+> a) Extraire la quatrième valeur du vecteur numérique ​num_vecteur
-> b) Extraire les première et troisièmes valeurs du vecteur numérique ​vecteur.num+> b) Extraire les première et troisièmes valeurs du vecteur numérique ​num_vecteur
-> c) Extraire toutes les valeurs du vecteur numérique ​vecteur.num ​à l’exception des deuxième et quatrième valeurs.+> c) Extraire toutes les valeurs du vecteur numérique ​num_vecteur ​à l’exception des deuxième et quatrième valeurs.
 > >
 ++++Défi 8a : Indexer des vecteurs| ++++Défi 8a : Indexer des vecteurs|
 <code rsplus> <code rsplus>
-vecteur.num[4] +> num_vecteur[4] 
-#! [1] 3+[1] 98
 </​code>​ </​code>​
 ++++ ++++
 ++++Défi 8b : Indexer des vecteurs| ++++Défi 8b : Indexer des vecteurs|
 <code rsplus> <code rsplus>
-vecteur.num[c(1,3)] +> num_vecteur[c(1,3)] 
-#! [1] 1  ​5+[1] 1  ​3
 </​code>​ </​code>​
 ++++ ++++
 ++++Défi 8c : Indexer des vecteurs| ++++Défi 8c : Indexer des vecteurs|
 <code rsplus> <code rsplus>
-vecteur.num[c(-2,​-4)] +> num_vecteur[c(-2,​-4)] 
-#! [1] 1  ​  - 4+[1] 1  ​ 32  -76  -4
 </​code>​ </​code>​
 ++++ ++++
------ 
-\\ 
 ----- -----
 == Défi 9 == == Défi 9 ==
  
->Explorer ​la différence entre ces deux lignes de codes :+>Explorez ​la différence entre ces deux lignes de codes :
 <file rsplus| Différences entre codes> <file rsplus| Différences entre codes>
-vecteur.car ​== "​bleu"​ +> car_vecteur ​== "​bleu"​ 
-vecteur.car[vecteur.car ​== "​bleu"​]+> car_vecteur[car_vecteur ​== "​bleu"​]
 </​file>​ </​file>​
 ++++Défi 9 : Différences entre codes| ++++Défi 9 : Différences entre codes|
-La première ligne de code évalue une déclaration logique. Pour chaque élément du vecteur ''​vecteur.car'',​ R vérifie si cet élément est exactement égal à « bleu » ou non et retourne une réponse (TRUE ou FALSE). La prochaine sous-section présente une brève introduction aux déclarations logiques. La deuxième ligne de code demande à R d’extraire tous les éléments à l’intérieur du vecteur ''​vecteur.car''​ qui sont exactement égaux à « bleu ». Il est également possible d'​extraire la valeur « bleu » en attribuant une valeur logique à chaque valeur du vecteur. Pour cela, il faut bien sûr connaître la position de la valeur « bleu » à l'​intérieur du vecteur.+La première ligne de code évalue une déclaration logique. Pour chaque élément du vecteur ''​car_vecteur'',​ R vérifie si cet élément est exactement égal à « bleu » ou non et retourne une réponse (TRUE ou FALSE). La prochaine sous-section présente une brève introduction aux déclarations logiques. La deuxième ligne de code demande à R d’extraire tous les éléments à l’intérieur du vecteur ''​car_vecteur''​ qui sont exactement égaux à « bleu ». Il est également possible d'​extraire la valeur « bleu » en attribuant une valeur logique à chaque valeur du vecteur. Pour cela, il faut bien sûr connaître la position de la valeur « bleu » à l'​intérieur du vecteur.
 <file rsplus> <file rsplus>
-vecteur.car[c(TRUE, FALSE, FALSE)] +car_vecteur[c(TRUE, FALSE, FALSE)] 
-#On spécifie ici que la première valeur est "​vraie",​ +# On spécifie ici que la première valeur est "​vraie",​ 
-#​c'​est-à-dire qu'on souhaite que R nous retourne la première valeur +# c'​est-à-dire qu'on souhaite que R nous retourne la première valeur 
-#du vecteur ​vecteur.car, soit "​bleu"​.+# du vecteur ​car_vecteur, soit "​bleu"​.
 </​file>​ </​file>​
 ++++ ++++
 ----- -----
-\\ +=== Indexer un data frame ===
-L’indexation des tableaux de données est similaire à celle des vecteurs, mais il est généralement nécessaire de spécifier deux dimensions : le numéro de ligne et de colonne. Pour ce faire, la syntaxe dans R est :\\ ''​tableau[numéro de ligne, numéro de colonne]''​. Voici quelques exemples d’indexation de tableaux de données. Prenez note que les quatre premières opérations sont également valides pour les matrices.+
  
-<file rsplus| Indexer un tableau de données+L’indexation des data frames est similaire à celle des vecteurs, mais il est généralement nécessaire de spécifier deux dimensions : le numéro de ligne et de colonne. Pour ce faire, la syntaxe dans R est : 
-#​Réutilisons le tableau de données ​créé précédemment (mon.premier.tab+ 
-#Extraire ​la première ligne du tableau de données+ ''​data frame[numéro de ligne, numéro de colonne]''​.  
-mon.premier.tab[1,] + 
-#Extraire ​la troisième colonne du tableau de données+Voici quelques exemples d’indexation de data frames. Prenez note que les quatre premières opérations sont également valides pour les matrices. 
-mon.premier.tab[,3] + 
-#Extraire ​le deuxième élément de la quatrième colonne du tableau de données+<file rsplus| Indexer un data frame
-mon.premier.tab[2,4] +# Réutilisons le data frame créé précédemment (mon_df
-#Extraire ​les lignes 2 à 4 du tableau de données+Extrayons ​la première ligne du data frame
-mon.premier.tab[c(2:4),] +> mon_df[1, ] 
-#Extraire ​la colonne « Code_Site ​» en référant directement à son nom. + 
-#Le signe de dollar ($) permet une telle opération ! +Extrayons ​la troisième colonne du data frame
-mon.premier.tab$Code_Site +> mon_df[, 3] 
-#Extraire ​les variables « Code_Site ​» et « pH.sol ​». +Notez qu'un index vide sélectionne toutes les valeurs 
-mon.premier.tab[,c("Code_Site","​pH.sol")]+ 
 +# Extrayons ​le deuxième élément de la quatrième colonne du data frame
 +> mon_df[2, 4] 
 + 
 +Extrayons ​les lignes 2 et 4 du data frame
 +> mon_df[c(2,4), ] 
 + 
 +Extrayons ​la colonne « site_id ​» en référant directement à son nom. 
 +# Le signe de dollar ($) permet une telle opération ! 
 +> mon_df$site_id 
 + 
 +# Extrayons la deuxième valeur de la colonne « site_id » 
 +> mon_df$site_id[2] 
 + 
 +Extrayons ​les variables « site_id ​» et « pH_sol ​». 
 +> mon_df[,c("site_id","​pH_sol")]
 </​file>​ </​file>​
-\\ 
 ----- -----
-== Défi 10 =+=== Un bref commentaire sur les déclarations logiques ===
-> a) Extrayez la colonne « n.especes » du tableau ''​mon.premier.tab''​ et multipliez-la par les quatre premières valeurs du vecteur ''​vecteur.num''​.\\ +
-> b) Ensuite, écrivez une déclaration logique qui vérifie si chaque valeur obtenueest supérieure à 25. Référez-vous au défi 9 pour compléter cette question.\\ +
-+
-++++ Défi 10a : Indexer et multiplier| +
-<code rsplus>​ +
-mon.premier.tab$n.especes * vecteur.num[c(1:​4)] +
-#! [1] 17 46 75 21 +
-</​code>​ +
-+++++
  
-++++ Défi 10b : Déclaration logique| +R permet de tester ​les déclarations logiques, i.e. tester ​si une déclaration est vraie ou fausse. ​Vous devez utiliser ​des opérateurs logiques ​pour cela.
-<code rsplus>​ +
-(mon.premier.tab$n.especes * vecteur.num[c(1:​4)]) > 25 +
-#! [1] FALSE TRUE TRUE FALSE +
-</​code>​ +
-++++ +
------ +
-\\ +
-==== Un bref commentaires sur les déclarations logiques ==== +
- +
-Les défis 9 et 10 ont brièvement présenté la capacité de R à évaluer des déclarations logiques, ​//i.e.// à évaluer ​si une déclaration est vraie ou fausse. ​Il est possible de comparer ​des objets avec les opérateurs logiques ​suivants :+
  
 ^ Opérateur ^ Description ^ ^ Opérateur ^ Description ^
Line 424: Line 496:
  
 <file rsplus| Évaluer des déclarations logiques>​ <file rsplus| Évaluer des déclarations logiques>​
-#​Commençons par créer deux vecteurs à comparer. +# Commençons par créer deux vecteurs à comparer. 
-x2 <- c(1:5) +x2 <- c(1:5) 
-y2 <- c(1, 2, -7, 4, 5) +y2 <- c(1, 2, -7, 4, 5) 
-#Vérifions si les éléments de x2 sont plus grand ou égaux à 3. + 
-#R retourne une valeur TRUE/FALSE pour chaque élément (dans le même ordre que x2). +# Vérifions si les éléments de x2 sont plus grand ou égaux à 3. 
-x2 >= 3 +# R retourne une valeur TRUE/FALSE pour chaque élément (dans le même ordre que x2). 
-#! [1] FALSE FALSE TRUE TRUE TRUE +x2 >= 3 
-#Vérifions si les éléments de x2 sont exactement égaux à ceux de y. +[1] FALSE FALSE TRUE TRUE TRUE 
-x2 == y2 + 
-#! [1] TRUE TRUE FALSE TRUE TRUE +# Vérifions si les éléments de x2 sont exactement égaux à ceux de y. 
-#Est-ce que 3 n’est pas égal à 4? Bien sûr! +x2 == y2 
-3 != 4 +[1] TRUE TRUE FALSE TRUE TRUE 
-#! [1] TRUE + 
-#Vérifions quels éléments de x2 sont plus grands que 2, mais plus petits que 5. +# Est-ce que 3 n’est pas égal à 4? Bien sûr! 
-#Il faut réécrire x2 deux fois pour que ça fonctionne! +3 != 4 
-x2 > 2 & x2 < 5 +[1] TRUE 
-#! [1] FALSE FALSE TRUE TRUE FALSE + 
-#Écrire x2 > 2 & < 5 va retourner une erreur !+# Vérifions quels éléments de x2 sont plus grands que 2, mais plus petits que 5. 
 +# Il faut réécrire x2 deux fois pour que ça fonctionne! 
 +x2 > 2 & x2 < 5 
 +[1] FALSE FALSE TRUE TRUE FALSE 
 +# Écrire x2 > 2 & < 5 va retourner une erreur !
 </​file>​ </​file>​
 +\\
 +-----
 +== Défi 10 ==
 +> a) Extrayez la colonne « num_sp » du tableau ''​mon_df''​ et multipliez-la par les quatre premières valeurs du vecteur ''​num_vecteur''​.\\
 +> b) Ensuite, écrivez une déclaration logique qui vérifie si chaque valeur obtenue est supérieure à 25. Référez-vous au défi 9 pour compléter cette question.\\
 +>
 +++++ Défi 10a : Indexer et multiplier|
 +<code rsplus>
 +> mon_df$num_sp * num_vecteur[c(1:​4)]
 +[1] 17 92 45 686
  
-===== Les fonctions =====+# Ou encore 
 +> mon_df[, 3] * num_vecteur[c(1:​4)] 
 +[1] 17 92 45 686 
 +</​code>​ 
 +++++ 
 + 
 +++++ Défi 10b : Déclaration logique| 
 +<code rsplus>​ 
 +> (mon_df$num_sp * num_vecteur[c(1:​4)]) > 25 
 +[1] FALSE TRUE TRUE TRUE 
 +</​code>​ 
 +++++
  
 +==== Les fonctions ====
 +----
 La plupart du temps, vous devrez utiliser des fonctions dans R pour effectuer les tâches voulues. La plupart du temps, vous devrez utiliser des fonctions dans R pour effectuer les tâches voulues.
  
-Les fonctions sont des outils qui permettent de simplifier l'​utilisation de R. Les fonctions ​permettent d'​exécuter des opérations sur des objets sans avoir à spécifier chaque étape. Les fonctions sont des codes pré-existants dans R qui sont exécutés lorsque nécessaire. Ça permet de sauver du temps, car il n'est pas nécessaire de créer un code et de l'​écrire à chaque fois qu'on doit l'​utiliser.+Les fonctions sont des outils qui permettent de simplifier l'​utilisation de R. Elles permettent d'​exécuter des opérations sur des objets sans avoir à spécifier chaque étape. Les fonctions sont des codes pré-existants dans R qui sont exécutés lorsque nécessaire. Ça permet de sauver du temps, car il n'est pas nécessaire de créer un code et de l'​écrire à chaque fois qu'on doit l'​utiliser.
  
-Pour exécuter une fonction, vous devez l'​__appeler__. L'​appel d'une fonction est un raccourci vers le code de la fonction. Pour ce faire, il est nécessaire de spécifier des valeurs d'​entrée qu'on nomme **arguments** (ou quelquefois paramètres). Après avoir lancé une fonction, R retourne une **valeur** dans la console. La commande doit être structurée proprement en suivant les "​règles de grammaire"​ du langage R (//i.e.// la syntaxe).+Pour exécuter une fonction, vous devez l'​__appeler__. L'​appel d'une fonction est un raccourci vers le code de la fonction. Pour ce faire, il est nécessaire de spécifier des valeurs d'​entrée qu'on nomme **arguments** (ou quelquefois paramètres). Après avoir lancé une fonction, R retourne une **valeur ​de retour** dans la console. La commande doit être structurée proprement en suivant les "​règles de grammaire"​ du langage R (//i.e.// la syntaxe).
  
 Un appel de fonction est structuré de la manière suivante : le nom de la fonction suivi de parenthèses ''​( )''​. On insère les arguments séparés par des virgules à l'​intérieur des parenthèses : Un appel de fonction est structuré de la manière suivante : le nom de la fonction suivi de parenthèses ''​( )''​. On insère les arguments séparés par des virgules à l'​intérieur des parenthèses :
Line 458: Line 557:
 Voyons l'​exemple de la fonction ''​sum''​ qui permet de faire la somme de deux ou plusieurs nombres. Voyons l'​exemple de la fonction ''​sum''​ qui permet de faire la somme de deux ou plusieurs nombres.
 <file rsplus| Syntaxe d'une fonction>​ <file rsplus| Syntaxe d'une fonction>​
-sum(1, 2) +sum(1, 2) 
-#! [1] 3+[1] 3
 </​file>​ </​file>​
- 
  
 Les arguments sont des **valeurs** utilisées comme instructions pour que la fonction puisse retourner un résultat. Les arguments sont des **valeurs** utilisées comme instructions pour que la fonction puisse retourner un résultat.
Line 467: Line 565:
  
 <file rsplus| Les objets comme arguments>​ <file rsplus| Les objets comme arguments>​
-a <- 3 +a <- 3 
-b <- 4 +b <- 5 
-sum(a, b) +sum(a, b) 
-#! [1] 7+[1] 8
 </​file>​ </​file>​
  
-La sortie, qui apparaît sur la dernière ligne, est la **valeur de retour** de la fonction. Dans ce cas-ci, c'est la somme de ''​a''​ et ''​b'',​ soit 7.\\ +La sortie, qui apparaît sur la dernière ligne, est la **valeur de retour** de la fonction. Dans ce cas-ci, c'est la somme de ''​a''​ et ''​b'',​ soit 8.\\
-\\+
  
 ----- -----
Line 481: Line 578:
 > a) - Créez un vecteur nommé ''​a''​ contenant tous les nombres de 1 à 5\\ > a) - Créez un vecteur nommé ''​a''​ contenant tous les nombres de 1 à 5\\
 > - Créez un objet nommé ''​b''​ avec une valeur de 2\\ > - Créez un objet nommé ''​b''​ avec une valeur de 2\\
-> - Ajoutez a à b en utilisant l'​opérateur ''​+''​ et enregistrez le résultat dans un objet appelé ''​result_add''​\\ +> - Ajoutez a à b en utilisant l'​opérateur ''​+''​ et enregistrez le résultat dans un objet appelé ''​resultat_add''​\\ 
-> - Ajoutez a à b en utilisant la fonction ''​sum()''​ et enregistrez le résultat dans un objet appelé ''​result_sum''​\\ +> - Ajoutez a à b en utilisant la fonction ''​sum()''​ et enregistrez le résultat dans un objet appelé ''​resultat_sum''​\\ 
-> - Comparez les objets ​result_add ​et result_sum. Sont-ils différents?​+> - Comparez les objets ​resultat_add ​et resultat_sum. Sont-ils différents?​
 > >
-> b) Ajoutez 5 à ''​result_sum''​ en utilisant la fonction ''​sum()''​.+> b) Ajoutez 5 à ''​resultat_sum''​ en utilisant la fonction ''​sum()''​.
  
 ++++Défi 11a : Appeler des fonctions| ++++Défi 11a : Appeler des fonctions|
 <file rsplus> <file rsplus>
-a <- 1:5 +a <- 1:5 
-b <- 2 +b <- 2 
-result_add ​<- a + b +> resultat_add ​<- a + b 
-result_sum ​<- sum(a, b)+> resultat_sum ​<- sum(a, b)
 </​file>​ </​file>​
 <code rsplus> <code rsplus>
-result_add +> resultat_add 
-#! [1]  3 4 5 6 7+[1]  3 4 5 6 7
 </​code>​ </​code>​
 L'​opération sur le vecteur ajoute deux à chaque élément. Le résultat est un **vecteur**. \\ L'​opération sur le vecteur ajoute deux à chaque élément. Le résultat est un **vecteur**. \\
  
 <code rsplus> <code rsplus>
-result_sum +> resultat_sum 
-#! [1] 17+[1] 17
 </​code>​ </​code>​
 La fonction ''​sum()''​ additionne toutes les valeurs de ''​a''​ et ''​b''​. C'est équivalent à 1 + 2 + 3 + 4 + 5 + 2. Le résultat est un **nombre**.\\ La fonction ''​sum()''​ additionne toutes les valeurs de ''​a''​ et ''​b''​. C'est équivalent à 1 + 2 + 3 + 4 + 5 + 2. Le résultat est un **nombre**.\\
Line 509: Line 606:
 ++++Défi 11b : Appeler des fonctions| ++++Défi 11b : Appeler des fonctions|
 <code rsplus> <code rsplus>
-sum(result_sum, 5) +sum(resultat_sum, 5) 
-#! [1] 22+[1] 22
 </​code>​ </​code>​
 ++++ ++++
 ----- -----
-\\+=== Arguments ===
  
 Tous les arguments ont un **nom** qui peut être indiqué lorsqu'​on appelle une fonction.\\ Tous les arguments ont un **nom** qui peut être indiqué lorsqu'​on appelle une fonction.\\
Line 523: Line 620:
  
 <file rsplus| Nom d'​argument>​ <file rsplus| Nom d'​argument>​
-log(x=8, base=2)+log(x = 8, base = 2)
 </​file>  ​ </​file>  ​
-\\ 
- 
 ----- -----
 == Défi 12 == == Défi 12 ==
Line 533: Line 628:
  
 <file rsplus| Défi 12> <file rsplus| Défi 12>
-a <- 1:100 +a <- 1:100 
-b <- a^2 +b <- a^2 
-plot(a, b) +plot(a, b) 
-plot(b, a) +plot(b, a) 
-plot(x=a, y=b) +plot(x = a, y = b) 
-plot(y=b, x=a)+plot(y = b, x = a)
 </​file>​ </​file>​
  
Line 551: Line 646:
 Crée un graphique de ''​a''​ en fonction de ''​b''​. Les noms d'​arguments ne sont pas indiqués, donc l'​ordre des arguments est primordial. Crée un graphique de ''​a''​ en fonction de ''​b''​. Les noms d'​arguments ne sont pas indiqués, donc l'​ordre des arguments est primordial.
  
-<code rsplus>​plot(x=a,​ y=b)</​code>​+<code rsplus>​plot(x = a, y = b)</​code>​
 {{:​pltxayb.png?​200|}}\\ {{:​pltxayb.png?​200|}}\\
 Crée un graphique de ''​b''​ en fonction de ''​a''​. C'est le même graphique que ''​plot(a,​ b)''​. Crée un graphique de ''​b''​ en fonction de ''​a''​. C'est le même graphique que ''​plot(a,​ b)''​.
  
-<code rsplus>​plot(y=b,​ x=a)</​code>​+<code rsplus>​plot(y = b, x = a)</​code>​
 {{:​plotybxa.png?​200|}}\\ {{:​plotybxa.png?​200|}}\\
 Crée un graphique de ''​b''​ en fonction de ''​a''​. Les noms d'​arguments sont indiqués, donc l'​ordre des arguments n'a pas d'​importance. Crée un graphique de ''​b''​ en fonction de ''​a''​. Les noms d'​arguments sont indiqués, donc l'​ordre des arguments n'a pas d'​importance.
 ++++ ++++
 ----- -----
-\\ 
  
-À titre de référence,​ voici une liste de fonctions ​communément ​utilisées dans R :+À titre de référence,​ voici une liste de fonctions ​couramment ​utilisées dans R :
  
 <​code>​ <​code>​
Line 570: Line 664:
 help (or ?), help.search (or ??), help.start help (or ?), help.search (or ??), help.start
 </​code>​ </​code>​
-\\ 
  
-===== Les paquets ​=====+===== 4. Installer et utiliser les packages R =====
  
 +==== Package ====
 +----
 +Les packages (//​paquets//​ pour être rigoureux) sont des regroupements de fonctions et de jeux de données partageant un thème similaire, //e.g.// statistiques,​ analyse spatiale, visualisation...
  
-Les paquets (//packages// en anglais) sont des regroupements de fonctions ​et de jeux de données partageant un thème similaire, //e.g.// statistiques,​ analyse spatiale, graphiques...+Tout le monde peut développer des packages et les rendre disponibles aux autres utilisateurs ​de R.
  
-Tout le monde peut développer des paquets et les rendre ​disponibles ​aux autres utilisateurs de R.+Les packages sont généralement ​disponibles ​via le //​Comprehensive ​Archive Network// (CRAN)[[http://​cran.r-project.org/​web/​packages/​]].
  
-Les paquets ​sont généralement ​disponibles ​via le Comprehensive R Archive Network (CRAN)[[http://​cran.r-project.org/​web/​packages/​]].+Actuellement,​ plus de 16000 packages ​sont disponibles ​librement.
  
-Actuellementplus de 5877 paquets sont disponibles librement.+Pour installer des packages dans Ril suffit d'​utiliser la fonction ''​install.packages()''​ :
  
-Pour installer des paquets dans R, il suffit d'​utiliser la fonction ''​install.packages()''​ : +<code rsplus| Installation d'​un ​package
- +install.packages("​ggplot2"​)
-<code rsplus| Installation d'​un ​paquet+
-install.packages("​ggplot2"​)+
 </​code>​ </​code>​
  
-Il est nécessaire d'​installer un paquet ​une seule fois, même si des mises à jours régulières sont recommandées. Cependant, pour utiliser une fonction se trouvant au sein d'​un ​paquet, il ne suffit pas de simplement installer le paquet. Il faut également utiliser la fonction ''​library()''​ à chaque début de session R pour "​charger"​ le paquet. Voici un exemple qui utilise la fonction ''​qplot()'' ​ du paquet ​**ggplot2** que l'on vient tout juste d'​installer.+Il est nécessaire d'​installer un package ​une seule fois, même si des mises à jours régulières sont recommandées. Cependant, pour utiliser une fonction se trouvant au sein d'​un ​package, il ne suffit pas de simplement installer le package. Il faut également utiliser la fonction ''​library()''​ à chaque début de session R pour "​charger"​ le package. Voici un exemple qui utilise la fonction ''​qplot()'' ​ du package ​**ggplot2** que l'on vient tout juste d'​installer.
  
 <code rsplus> <code rsplus>
-qplot(1:10, 1:10)+qplot(1:10, 1:10)
 </​code>​ </​code>​
  
-Le paquet ​a été installé correctement,​ mais il n'a pas été chargé. Par conséquent,​ l'​exécution de ce code cause l'​erreur suivante :+Le package ​a été installé correctement,​ mais il n'a pas été chargé. Par conséquent,​ l'​exécution de ce code cause l'​erreur suivante :
  
 ''​Erreur:​ impossible de trouver la fonction "​qplot"''​ ''​Erreur:​ impossible de trouver la fonction "​qplot"''​
  
-Pour utiliser la fonction ''​qplot()'',​ il faut charger le paquet ​''​ggplot2''​ avant d'​appeler cette fonction.+Pour utiliser la fonction ''​qplot()'',​ il faut charger le package ​''​ggplot2''​ avant d'​appeler cette fonction.
  
 <code rsplus> <code rsplus>
-library("​ggplot2"​) +library("​ggplot2"​) 
-qplot(1:10, 1:10)+qplot(1:10, 1:10)
 </​code>​ </​code>​
  
-La fonction peut maintenant être trouvée par R et l'​exécution de cette fonction retourne le graphique suivant :\\ +La fonction peut maintenant être trouvée par R et l'​exécution de cette fonction retourne le graphique suivant :
-{{::​qplot.png?​200|}}\\+
  
-Il est de bon usage de décharger les paquets ​une fois que l'on a fini de les utiliser car ils pourraient entrer en conflit avec d'​autres ​paquets. Le déchargement est effectué avec la fonction ''​detach()''​ et en spécifiant qu'il s'agit d'​un ​paquet+{{::​qplot.png?​200|}} 
-<file rsplus| Déchargement d'​un ​paquet+ 
-detach(package:​ggplot2)+Il est de bon usage de décharger les packages ​une fois que l'on a fini de les utiliser car ils pourraient entrer en conflit avec d'​autres ​packages. Le déchargement est effectué avec la fonction ''​detach()''​ et en spécifiant qu'il s'agit d'​un ​package
 +<file rsplus| Déchargement d'​un ​package
 +detach(package:​ggplot2)
 </​file>​ </​file>​
-===== Obtenir de l'aide et ressources supplémentaires ===== 
  
-==== Obtenir de l’aide ​avec les fonctions ​====+ 
 +==== Obtenir de l’aide ==== 
 +----- 
 + 
 +=== Recherche de fonctions ​===
  
 Nous avons vu jusqu'​à maintenant que R est un outil très puissant et comporte de nombreuses fonctions. Parmi ces fonctions, il y en a probablement une qui vous permet d'​effectuer une tâche que vous devez compléter. Nous avons vu jusqu'​à maintenant que R est un outil très puissant et comporte de nombreuses fonctions. Parmi ces fonctions, il y en a probablement une qui vous permet d'​effectuer une tâche que vous devez compléter.
  
-Par contre, il n'est pas toujours facile de savoir quelle fonction ​utliser ​pour une tâche précise. Comment trouver la bonne ?+Par contre, il n'est pas toujours facile de savoir quelle fonction ​utiliser ​pour une tâche précise. Comment trouver la bonne ?
  
 Pour trouver une fonction pouvant réaliser une action spécifique,​ il faut utiliser l'​opérateur ''??''​ ou la fonction ''​help.search()''​. Pour effectuer une recherche, tapez ''??''​ suivi d'un terme relié à votre recherche. Par exemple, supposons que l'on souhaite créer une séquence de nombres pairs entre 0 et 10. On effectue une recherche avec le terme **sequence** : Pour trouver une fonction pouvant réaliser une action spécifique,​ il faut utiliser l'​opérateur ''??''​ ou la fonction ''​help.search()''​. Pour effectuer une recherche, tapez ''??''​ suivi d'un terme relié à votre recherche. Par exemple, supposons que l'on souhaite créer une séquence de nombres pairs entre 0 et 10. On effectue une recherche avec le terme **sequence** :
  
 <code rsplus Recherche d'une fonction>​ <code rsplus Recherche d'une fonction>​
-??sequence+??sequence
 </​code>​ </​code>​
  
Line 631: Line 729:
 {{::​sequence_help.png?​400|}}\\ {{::​sequence_help.png?​400|}}\\
  
-**Note** : les résultats d'une recherche dépendent des paquets ​installés sur votre ordinateur.+**Note** : les résultats d'une recherche dépendent des packages ​installés sur votre ordinateur.
  
 Les résultats de la recherche comportent deux colonnes : Les résultats de la recherche comportent deux colonnes :
-  * À gauche, on retrouve les noms du paquet ​et de la fonction sous le format : ''​**nom_du_paquet**:://​nom_de_la_fonction//''​.+  * À gauche, on retrouve les noms du package ​et de la fonction sous le format : ''​**nom_du_package**:://​nom_de_la_fonction//''​.
   * À droite, on retrouve la description des fonctions.   * À droite, on retrouve la description des fonctions.
  
 Généralement,​ les fonctions portent un nom qui est représentatif de ce qu'​elles font. C'est plus facile de les trouver. Rappelez-vous de ceci si jamais vous décidez d'​écrire vos propres fonctions ! Généralement,​ les fonctions portent un nom qui est représentatif de ce qu'​elles font. C'est plus facile de les trouver. Rappelez-vous de ceci si jamais vous décidez d'​écrire vos propres fonctions !
  
-Dans le cas présent, le résultat qui nous intéresse est ''​base::​seq'',​ //i.e.// la fonction ''​seq''​ qui se trouve dans le paquet ​''​base''​ qui permet de générer des séquences.\\ +Dans le cas présent, le résultat qui nous intéresse est ''​base::​seq'',​ //i.e.// la fonction ''​seq''​ qui se trouve dans le package ​''​base''​ qui permet de générer des séquences.\\ 
-**Note** : Le paquet ​''​base''​ comporte des fonctions de base qui se chargent automatiquement lorsqu'​on lance R. Elles sont donc toujours disponibles.+**Note** : Le package ​''​base''​ comporte des fonctions de base qui se chargent automatiquement lorsqu'​on lance R. Elles sont donc toujours disponibles. 
 +----- 
 +=== Aide pour les fonctions ===
  
 Utilisons la fonction ''​seq()''​ afin de générer notre séquence de nombres pairs. Pour l'​instant,​ nous ne savons rien de cette fonction. Comment fonctionne-t-elle ? Comment l'​utiliser ? Utilisons la fonction ''​seq()''​ afin de générer notre séquence de nombres pairs. Pour l'​instant,​ nous ne savons rien de cette fonction. Comment fonctionne-t-elle ? Comment l'​utiliser ?
Line 649: Line 749:
  
 <code rsplus Trouver de l'​aide>​ <code rsplus Trouver de l'​aide>​
-?seq+?seq
 </​code>​ </​code>​
  
Line 658: Line 758:
 Une page d'aide contient généralement les sections et éléments suivants : Une page d'aide contient généralement les sections et éléments suivants :
 (**Note** : parfois, une même page d'aide est utilisée pour plus d'une fonction.) (**Note** : parfois, une même page d'aide est utilisée pour plus d'une fonction.)
-  * Dans le coin supérieur gauche, les noms de la fonction et du paquet ​dans lequel elle se trouve sont indiqués dans le format suivant : ''//​fonction//​ {**paquet**}''​. +  * Dans le coin supérieur gauche, les noms de la fonction et du package ​dans lequel elle se trouve sont indiqués dans le format suivant : ''//​fonction//​ {**package**}''​. 
-  * **Description**:​ Une brève ​descriptionde ​la fonction.+  * **Description**:​ Une brève ​description de la fonction.
   * **Usage**: Explique comment utiliser la fonction, en particulier quels sont les noms et l'​ordre des arguments. Si une valeur est spécifiée pour un argument, ça signifie que c'est la valeur par défaut de cet argument et qu'il est facultatif de l'​inclure dans notre commande. Si l'​argument est manquant, la valeur par défaut sera utilisée. Par exemple, si on ne spécifie pas l'​argument ''​from''​ pour la fonction ''​seq()'',​ la séquence débutera automatiquement par **1**.   * **Usage**: Explique comment utiliser la fonction, en particulier quels sont les noms et l'​ordre des arguments. Si une valeur est spécifiée pour un argument, ça signifie que c'est la valeur par défaut de cet argument et qu'il est facultatif de l'​inclure dans notre commande. Si l'​argument est manquant, la valeur par défaut sera utilisée. Par exemple, si on ne spécifie pas l'​argument ''​from''​ pour la fonction ''​seq()'',​ la séquence débutera automatiquement par **1**.
   * **Arguments**:​ Une description détaillée de tous les arguments et de ce qui est attendu ou requis pour que la fonction soit utilisée correctement. Portez attention à cette section ! C'est une liste de tous les arguments pour toutes les fonctions et non une liste d'​arguments pour une fonction donnée. Par exemple, dans l'​image ci-dessus, les arguments ''​from''​ et ''​to''​ ne sont pas disponibles pour la fonction ''​seq_along()''​. ​   * **Arguments**:​ Une description détaillée de tous les arguments et de ce qui est attendu ou requis pour que la fonction soit utilisée correctement. Portez attention à cette section ! C'est une liste de tous les arguments pour toutes les fonctions et non une liste d'​arguments pour une fonction donnée. Par exemple, dans l'​image ci-dessus, les arguments ''​from''​ et ''​to''​ ne sont pas disponibles pour la fonction ''​seq_along()''​. ​
Line 668: Line 768:
   * **Exemples**:​ Quelques exemples d'​utilisation de la fonction.   * **Exemples**:​ Quelques exemples d'​utilisation de la fonction.
  
-\\ 
 ----- -----
 == Défi 13 == == Défi 13 ==
Line 680: Line 779:
 ++++ Défi 13a | ++++ Défi 13a |
 <code rsplus> <code rsplus>
-seq(from=0, to=10, by=2) +seq(from = 0, to = 10, by = 2) 
-#! [1] 0 2 4 6 8 10+[1] 0 2 4 6 8 10
 </​code>​ </​code>​
  
Line 687: Line 786:
  
 <code rsplus> <code rsplus>
-seq(0, 10, 2) +seq(0, 10, 2) 
-#! [1] 0 2 4 6 8 10+[1] 0 2 4 6 8 10
 </​code>​ </​code>​
 ++++ ++++
Line 694: Line 793:
 ++++ Défi 13b | ++++ Défi 13b |
 <code rsplus> <code rsplus>
-nombres <- c(4, 55, 6, 22, 3+nombres <- c(2, 4, 22, 6, 26
-sort(nombres,​ decreasing=TRUE) +sort(nombres,​ decreasing = TRUE) 
-#! [1]  ​55 ​22 6 4 3+[1] 26 22    2
 </​code>​ </​code>​
 ++++ ++++
 ----- -----
-\\ +=== Obtenir de l’aide sur le web ===
- +
-==== Obtenir de l’aide sur le web ====+
  
 Généralement,​ la meilleure source d'​information sur R provient d'un moteur de recherche (Google, Bing, Yahoo, etc.). Généralement,​ la meilleure source d'​information sur R provient d'un moteur de recherche (Google, Bing, Yahoo, etc.).
Line 712: Line 809:
   * Apprenez à lire les discussions sur les forums. Il y a de fortes chances que d'​autres utilisateurs aient eu le même problème avant vous. Créez-vous un compte sur les forums où les questions concernant R sont souvent posées comme [[http://​stats.stackexchange.com|stackexchange]].   * Apprenez à lire les discussions sur les forums. Il y a de fortes chances que d'​autres utilisateurs aient eu le même problème avant vous. Créez-vous un compte sur les forums où les questions concernant R sont souvent posées comme [[http://​stats.stackexchange.com|stackexchange]].
   * N'​hésitez pas à faire des recherches avec des mots-clés différents!   * N'​hésitez pas à faire des recherches avec des mots-clés différents!
- 
-\\ 
  
 ----- -----
Line 730: Line 825:
 d) ''​ls''​ \\ d) ''​ls''​ \\
 ++++ ++++
 +
 +===== Ressources additionnelles =====
 +
 +=== Aides mémoire (//cheat sheets//​)===
 +
 +[[https://​www.rstudio.com/​resources/​cheatsheets/​|https://​www.rstudio.com/​resources/​cheatsheets/​]]
 +
 +Ces aides-mémoires sont aussi disponible directement dans RStudio (Help -> Cheat Sheets)
 +----
 +
 +=== Quelques livres ==
 +
 +  * R for Dummies
 +  * A Handbook of Statistical Analyses using R
 +  * R in Action
 +  * Introductory Statistics in R
 +  * A Beginner'​s Guide to R
 +  * The R Book
 +
 +----
 +
 +=== Quelques sites internet ===
 +
 +  * [[http://​r4ds.had.co.nz/​index.html|http://​r4ds.had.co.nz/​index.html]]
 +  * [[https://​cran.r-project.org/​doc/​manuals/​r-release/​R-intro.html|https://​cran.r-project.org/​doc/​manuals/​r-release/​R-intro.html]]
 +  * [[http://​cran.r-project.org/​doc/​contrib/​Baggott-refcard-v2.pdf|http://​cran.r-project.org/​doc/​contrib/​Baggott-refcard-v2.pdf]]
 +  * [[http://​statmethods.net/​|http://​statmethods.net/​]]
 +  * [[https://​support.rstudio.com/​hc/​en-us/​categories/​200035113-Documentation|https://​support.rstudio.com/​hc/​en-us/​categories/​200035113-Documentation]]
 +  * [[http://​cookbook-r.com/​|http://​cookbook-r.com/​]]
 +
 +==== Script R ==== 
 ----- -----
-\\ +Pour réviser ou pratiquer cet atelier:
-==== Quelques livres de référence utiles ==== +
-Dalgaard, P. - Introductory Statistics with R.\\ +
-Zuur, A.F., Ieno, E.N. & Meesters, E. - A Beginner'​s Guide to R.\\ +
-Crawley, M. - The R Book.\\ +
-Everitt, B.S. & Hothorn, T. - A Handbook of Statistical Analyses Using R.\\ +
-Kabacoff, R.I. - R in Action.+
  
-==== Quelques sites web pertinents ==== +[[{}{ wiki:workshop01-fr.r }|Télécharger le script ​R]]
-http://​stats.stackexchange.com/​ \\ +
-https://​www.zoology.ubc.ca/​~schluter/​R/​ \\ +
-http://​www.statmethods.net/​ \\ +
-http://​www.rseek.org/​ \\ +
-http://​www.cookbook-r.com/ \\ +
-http://cran.r-project.org/​doc/​contrib/​Baggott-refcard-v2.pdf +
-ftp://​cran.r-project.org/​pub/​R/​doc/​contrib/​Herve-Aide-memoire-statistique.pdf+