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 [2018/10/15 12:47]
katherinehebert [Quelques sites web pertinents]
r_atelier1 [2019/09/03 21:47] (current)
mariehbrice [Atelier 1 : Introduction à R]
Line 6: Line 6:
  
 //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 ======
  
Line 12: Line 13:
 **Résumé :** Dans cet atelier d’introduction à R, vous apprendrez ce qu’est le logiciel d’analyse statistique R, vous verrez plusieurs raisons pourquoi vous devriez absolument l’utiliser (!), et vous ferez vos premiers pas dans ce logiciel. Vous 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é :** Dans cet atelier d’introduction à R, vous apprendrez ce qu’est le logiciel d’analyse statistique R, vous verrez plusieurs raisons pourquoi vous devriez absolument l’utiliser (!), et vous ferez vos premiers pas dans ce logiciel. Vous 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 nouvelle [[https://​qcbsrworkshops.github.io/Workshops/​workshop01/​workshop01-fr/​workshop01-fr.html|présentation Rmarkdown]]**+**Lien vers la nouvelle [[https://​qcbsrworkshops.github.io/​workshop01/​workshop01-fr/​workshop01-fr.html#1|présentation Rmarkdown]]** 
  
 //S'il vous plaît essayez-la et dites aux coordonnateurs des ateliers R ce que vous en pensez!// //S'il vous plaît essayez-la et dites aux coordonnateurs des ateliers R ce que vous en pensez!//
Line 18: Line 20:
 Lien vers l'​ancienne [[http://​prezi.com/​8ckbtue5pgi4/​csbq-atelier-r-1/​|présentation Prezi]] 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/​ReferenceScriptWorkshop1%20-%20FR.R|script]] requis pour cet atelier.
  
-===== Installation de R et de R Studio ===== 
  
 +
 +
 +===== 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.
  
Line 27: Line 32:
 ===== Qu’est-ce que le logiciel R ? ===== ===== Qu’est-ce que le logiciel R ? =====
 R 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. R 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.
 +
 ===== Pourquoi utiliser R ? ===== ===== Pourquoi utiliser R ? =====
  
Line 40: Line 46:
  
 ==== Utiliser R Studio ==== ==== Utiliser R Studio ====
 +-----
 +\\
 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 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 R Studio. 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 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 R Studio.
 \\ \\
 ----- -----
 == Défi 1 == == Défi 1 ==
- 
 Lancer R Studio Lancer R Studio
  
Line 50: Line 57:
 ----- -----
 \\ \\
-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. ​+ 
 +**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 :  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 : 
 <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 66: Line 74:
 [6] 6 7 8 9 10 [6] 6 7 8 9 10
 </​file>​ </​file>​
 +
 ==== R comme calculatrice ===== ==== R comme 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 92: Line 103:
 [1] 8 [1] 8
 </​file> ​   </​file> ​  
 +\\ 
 +-----
 == Défi 2 == == Défi 2 ==
- 
 Répondez à la question d'​habileté suivante dans la console de R Studio : 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 ==
  
Line 106: Line 117:
 2 + 16 x 24 - 56 / ( 2 + 1) - 457 2 + 16 x 24 - 56 / ( 2 + 1) - 457
  
-++Défi 3 : Solution| \\ ''>​ 2+16*24-56/​(2+1)-457\\+++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 117: Line 127:
  
 {{::​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 ===== ===== Le concept d’objet dans R =====
Line 133: Line 143:
  
 <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 157: Line 167:
 </​file>​ </​file>​
  
- 
------ 
 **Truc R** **Truc R**
  
 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 ! 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 185: Line 190:
 ''​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.
------+
 \\ \\
 ==== Les différentes structures de données dans 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 couramment rencontrés dans R.
Line 200: Line 202:
 {{ :: 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>​
 +\\
 ----- -----
 == Défi 7 == == Défi 7 ==
Line 213: Line 232:
 </​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 **stackoverflow**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 quelorsqu’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 que lorsqu’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 lui-même. 
-#! [1]  1 4 9 16 25 +x * x 
-#C’est la même chose que x au carré ! +[1]  1 4 9 16 25 
-x^2 + 
-#! [1]  1 4 9 16 25+# C’est la même chose que x au carré ! 
 +x^2 
 +[1]  1 4 9 16 25
 </​file>​ </​file>​
  
 Un autre type d’objet couramment utilisé en écologie est le tableau de données. Un 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 observations,​ cas, individus, sites ou répétitions sont toujours représentés en lignes. Un 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é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. Un autre type d’objet couramment utilisé en écologie est le tableau de données. Un 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 observations,​ cas, individus, sites ou répétitions sont toujours représentés en lignes. Un 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é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.
  
-Code_Site ​^ pH.sol ^ n.especes ​Traitement ​+ID du site ^ pH sol ^ # espece ​traitement ​
-| A1.01 | 5.6 | 17 | Fertilise ​+| A1.01 | 5.6 | 17 | Fertilisé ​
-| A1.02 | 7.3 | 23 | Fertilise ​+| A1.02 | 7.3 | 23 | Fertilisé ​
-| B1.01 | 4.1 | 15 | Pas Fertilise ​+| B1.01 | 4.1 | 15 | Non Fertilisé ​
-| B1.02 | 6.0 | 17 | Pas Fertilise ​|+| B1.02 | 6.0 | 17 | Non Fertilisé ​|
  
-N. B. Les noms des colonnes n'​ont ​pas d'accent ni d'​espace puisque R préfère une seule suite de caractères comme titre. Ainsi, ​n.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'​). ​+N. B. Les noms des colonnes ​et leur contenu ​n'​ont ​ni accentni d'​espace, ni caractères spéciaux ​puisque R préfère une seule suite de caractères comme titre. Ainsi, ​especes 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'​). ​
  
 <file rsplus| Création d’un tableau de données> ​ <file rsplus| Création d’un tableau de données> ​
-#On commence par créer les vecteurs. +# On commence par créer les vecteurs. 
-Code_Site<​-c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​) +site_id ​<- c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​) 
-pH.sol<-c(5.6, 7.3, 4.1, 6.0) +pH_sol ​<- c(5.6, 7.3, 4.1, 6.0) 
-n.especes<-c(17, 23, 15, 7) +num_sp ​<- c(17, 23, 15, 7) 
-Traitement<​-c("​Fertilise", "Fertilise", "Pas.Fertilise", "Pas.Fertilise") +traitement ​<- c("Fert", "Fert", "Non_fert", "Non_fert") 
-#On peut grouper tous ces vecteurs en un tableau de données avec la fonction data.frame. + 
-mon.premier.tab<​-data.frame(Code_SitepH.soln.especesTraitement+# On peut grouper tous ces vecteurs en un tableau de données avec la fonction data.frame()
-#On l’affiche à la console! +mon_df ​<- data.frame(site_idpH_solnum_sptraitement) 
-mon.premier.tab+ 
 +# On l’affiche à la console! 
 +mon_df
 </​file>​ </​file>​
 +\\
 +-----
 +**Truc R**  ​
  
 +Voici la fonction ''​dput()''​ dans un exemple plus concret: ​
 +<code rsplus>
 +> dput(mon_df)
 +structure(list(site_id = structure(1:​4,​ .Label = c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​),​ class = "​factor"​),​ pH_sol = c(5.6, 7.3, 4.1, 6), num_sp = c(17, 23, 15, 7), traitement = structure(c(1L,​ 1L, 2L, 2L), .Label = c("​Fert",​ "​Non_fert"​),​ class = "​factor"​)),​ 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 = structure(1:​4,​ .Label = c("​A1.01",​ "​A1.02",​ "​B1.01",​ "​B1.02"​),​ class = "​factor"​),​
 +               ​pH_sol = c(5.6, 7.3, 4.1, 6),
 +               ​num_sp = c(17, 23, 15, 7),
 +               ​traitement = structure(c(1L,​ 1L, 2L, 2L), .Label = c("​Fert",​ "​Non_fert"​),​ class = "​factor"​)),​
 + 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 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. 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 ===== ===== Indexer des objets dans R =====
  
Line 299: Line 330:
  
 <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 à 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'​. 
 + 
 +# Nous pouvons également utiliser des conditions pour sélectionner des valeurs. 
 +> impair[impair > 4] 
 +[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. #Extraire tous les éléments correspondant exactement à « bleu » du vecteur de caractères.
 #Prenez note de l’utilisation du double signe d’égalité ==. #Prenez note de l’utilisation du double signe d’égalité ==.
-vecteur.car ​[vecteur.car ​== "​bleu"​] +> car_vecteur[car_vecteur ​== "​bleu"​] 
-#! [1]  "​bleu"​+[1]  "​bleu"​ 
 </​file>​ </​file>​
 \\ \\
Line 329: Line 367:
 == 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>​
 ++++ ++++
 ----- -----
 \\ \\
-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.+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>​ <file rsplus| Indexer un tableau de données>​
-#​Réutilisons le tableau de données créé précédemment (mon.premier.tab+# Réutilisons le tableau de données créé précédemment (mon_df
-#Extraire ​la première ligne du tableau de données. +Extrayons ​la première ligne du tableau de données. 
-mon.premier.tab[1,] +> mon_df[1, ] 
-#Extraire ​la troisième colonne du tableau de données. + 
-mon.premier.tab[,3] +Extrayons ​la troisième colonne du tableau de données. 
-#Extraire ​le deuxième élément de la quatrième colonne du tableau de données. +> mon_df[, 3] 
-mon.premier.tab[2,4] +Notez qu'un index vide sélectionne toutes les valeurs 
-#Extraire ​les lignes 2 à 4 du tableau de données. + 
-mon.premier.tab[c(2:4),] +# Extrayons ​le deuxième élément de la quatrième colonne du tableau de données. 
-#Extraire ​la colonne « Code_Site ​» en référant directement à son nom. +> mon_df[2, 4] 
-#Le signe de dollar ($) permet une telle opération ! + 
-mon.premier.tab$Code_Site +Extrayons ​les lignes 2 à 4 du tableau de données. 
-#Extraire ​les variables « Code_Site ​» et « pH.sol ​». +> mon_df[c(2:4), ] 
-mon.premier.tab[,c("Code_Site","​pH.sol")]+ 
 +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 == 
-> 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| 
-<code rsplus> 
-(mon.premier.tab$n.especes * vecteur.num[c(1:​4)]) > 25 
-#! [1] FALSE TRUE TRUE FALSE 
-</​code>​ 
-++++ 
------ 
-\\ 
 ==== Un bref commentaire sur les déclarations logiques ==== ==== Un bref commentaire 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 :+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.
  
 ^ Opérateur ^ Description ^ ^ Opérateur ^ Description ^
Line 428: Line 455:
  
 <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
 +
 +# 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 ===== ===== Les fonctions =====
Line 452: Line 506:
 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 rerour** 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 462: Line 516:
 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>​
  
Line 471: Line 525:
  
 <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.\\
 \\ \\
- 
 ----- -----
 == Défi 11 == == Défi 11 ==
Line 485: Line 538:
 > 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 513: Line 566:
 ++++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>​
 ++++ ++++
Line 527: Line 580:
  
 <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 537: Line 589:
  
 <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 555: Line 607:
 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.
Line 574: Line 626:
 help (or ?), help.search (or ??), help.start help (or ?), help.search (or ??), help.start
 </​code>​ </​code>​
-\\ 
  
 ===== Les paquets ===== ===== Les paquets =====
- 
  
 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, 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, visualisation...
Line 590: Line 640:
  
 <code rsplus| Installation d'un paquet> <code rsplus| Installation d'un paquet>
-install.packages("​ggplot2"​)+install.packages("​ggplot2"​)
 </​code>​ </​code>​
  
Line 596: Line 646:
  
 <code rsplus> <code rsplus>
-qplot(1:10, 1:10)+qplot(1:10, 1:10)
 </​code>​ </​code>​
  
Line 606: Line 656:
  
 <code rsplus> <code rsplus>
-library("​ggplot2"​) +library("​ggplot2"​) 
-qplot(1:10, 1:10)+qplot(1:10, 1:10)
 </​code>​ </​code>​
  
Line 615: Line 665:
 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: 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:
 <file rsplus| Déchargement d'un paquet> <file rsplus| Déchargement d'un paquet>
-detach(package:​ggplot2)+detach(package:​ggplot2)
 </​file>​ </​file>​
 +
 ===== Obtenir de l'aide et ressources supplémentaires ===== ===== Obtenir de l'aide et ressources supplémentaires =====
  
 ==== Obtenir de l’aide avec les fonctions ==== ==== Obtenir de l’aide avec les 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 653: Line 705:
  
 <code rsplus Trouver de l'​aide>​ <code rsplus Trouver de l'​aide>​
-?seq+?seq
 </​code>​ </​code>​
  
Line 663: Line 715:
 (**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 paquet dans lequel elle se trouve sont indiqués dans le format suivant : ''//​fonction//​ {**paquet**}''​.
-  * **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 671: Line 723:
   * **Voir aussi**: Une liste de fonctions connexes pouvant parfois être utiles, spécialement lorsqu'​on cherche la fonction appropriée à nos besoins.   * **Voir aussi**: Une liste de fonctions connexes pouvant parfois être utiles, spécialement lorsqu'​on cherche la fonction appropriée à nos besoins.
   * **Exemples**:​ Quelques exemples d'​utilisation de la fonction.   * **Exemples**:​ Quelques exemples d'​utilisation de la fonction.
- 
 \\ \\
 ----- -----
Line 684: Line 735:
 ++++ 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 691: Line 742:
  
 <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 698: Line 749:
 ++++ 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 716: Line 766:
   * 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!
- 
 \\ \\
- 
 ----- -----
 == Défi 14 == == Défi 14 ==
Line 734: Line 782:
 d) ''​ls''​ \\ d) ''​ls''​ \\
 ++++ ++++
 +
 +==== Quelques livres de référence utiles ====
 ----- -----
-\\ +
-==== Quelques livres de référence utiles ====+
 Dalgaard, P. - Introductory Statistics with R.\\ Dalgaard, P. - Introductory Statistics with R.\\
 Zuur, A.F., Ieno, E.N. & Meesters, E. - A Beginner'​s Guide to R.\\ Zuur, A.F., Ieno, E.N. & Meesters, E. - A Beginner'​s Guide to R.\\
Line 744: Line 793:
  
 ==== Quelques sites web pertinents ==== ==== Quelques sites web pertinents ====
 +-----
 http://​stats.stackexchange.com/​ \\ http://​stats.stackexchange.com/​ \\
 https://​www.zoology.ubc.ca/​~schluter/​R/​ \\ https://​www.zoology.ubc.ca/​~schluter/​R/​ \\
Line 753: Line 803:
  
 ==== Script R ====  ==== Script R ==== 
 +-----
 Pour réviser ou pratiquer cet atelier: Pour réviser ou pratiquer cet atelier:
  
 [[{}{ :​referencescriptworkshop1.r }|Télécharger le script R]] [[{}{ :​referencescriptworkshop1.r }|Télécharger le script R]]