Ateliers R du CSBQ

Cette série de 10 ateliers guide les participants à travers les étapes requises afin de maîtriser le logiciel R pour une grande variété d’analyses statistiques pertinentes en recherche en biologie et en écologie. Ces ateliers en libre accès ont été créés par des membres du CSBQ à la fois pour les membres du CSBQ et pour la grande communauté d’utilisateurs de R.

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

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 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 présentation Prezi associée : Prezi

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.

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 en source libre ! Ça signifie que ce logiciel est libre et gratuit et constamment mis à jour et amélioré.

R est compatible avec la majorité des système d'exploitation, ce qui rend le partage de codes R facile. De plus, le langage R permet d'entrer en contact avec des gens de divers horizons à travers le monde et avec différents systèmes d'exploitation.

R 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ées. Tout est possible avec un seul logiciel !

De plus en plus de scientifiques utilisent R chaque année. Ses capacités sont en augmentation constante et vont continuer dans cette direction au fil des années. Cela 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.

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.


Défi 1

Lancer R Studio

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 :

Illustration du texte dans la console R
> commande (input)
[1] sortie (output)

Note 1: Il faut toujours appuyer sur “Entrée” pour lancer une commande dans la console.

Note 2: Les nouveaux utilisateurs de R se demandent souvent ce que les crochets devant la sortie représentent. Ils indiquent tout simplement la position des éléments de la sortie. Par exemple, si vous demandez à R d'afficher les nombres de 1 à 10 et que la sortie est sur deux lignes, les crochets au début de la deuxième ligne indiquent à quel élément on est rendu (le 6ième élément dans ce cas-ci).

Comprendre les crochets devant la sortie (output) de la console
[1] 1 2 3 4 5
[6] 6 7 8 9 10

R comme calculatrice

La première chose à savoir à propos de la console R est qu'on peut l'utiliser comme calculatrice.

Addition
> 1+1
[1] 2
Soustraction
> 10-1
[1] 9
Multiplication
> 2*2
[1] 4
Division
> 8/2
[1] 4
Exposants
> 2^3
[1] 8
Défi 2

Répondez à la question d'habileté suivante dans la console de R Studio : 2 + 16 x 24 - 56

Défi 2 : Solution

Défi 3

Répondez à la question d'habileté suivante dans la console de R Studio. Faites attention à la priorité des opérations !
2 + 16 x 24 - 56 / ( 2 + 1) - 457

Défi 3 : Solution

Prenez note que R respecte toujours la priorité des opérations.


Truc R

Utilisez les flèches “haut” et “bas” pour revenir à des commandes antérieures. Ces touches vous permettent de faire défiler l'historique des commandes. C'est un outil utile afin de vérifier si vous avez fait une erreur dans une commande. C'est également utile pour modifier rapidement une commande et la relancer d'une manière légèrement différente.

Utilisez les flèches pour revenir aux commandes précédentes.



Défi 4

Quelle est l'aire d'un cercle avec un rayon de 5 cm ?

Défi 4 : Solution

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 :

Illustration du concept d’objet
#Commençons par créer un objet nommé moyenne.x.
#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.
#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.
moyenne.x <- (2+6)/2
#En tapant le nom de l’objet dans la console, R retourne la valeur de l’objet.
moyenne.x
#! [1]  4

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 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 :

Priorité avec l’opérateur d’assignation et le symbole d’égalité
> y <- x = 5 
Error in y <- x = 5 : object 'y' not found
> y = x <- 5 
> y
[1] 5
> x
[1] 5

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 !




Défi 5
Créez un objet avec une valeur de 1 + 1.718282 (i.e. le logarithme naturel) et nommez le log.nat.

Défi 5 : Solution




Défi 6
Créez un objet (vous choisissez la valeur) avec un nom débutant par un chiffre. Que se passe-t-il?

Défi 6 : Solution




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.



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 communément rencontrés dans R.

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.

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 !


Défi 7
Créez un vecteur comprenant les cinq premiers nombres impairs (en commençant par 1) et nommez ce vecteur “impair”.

Défi 7 : Solution



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).

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)



Truc R

Utilisez la fonction dput pour obtenir l'inverse, c'est-à-dire le contenue d'un objet sous forme de vecteur. Par exemple :

> impair <- c(1, 3, 5, 7, 9)
> impair
[1] 1 3 5 7 9
 
> dput(impair)
c(1, 3, 5, 7, 9)

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’inverse, 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).



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.

Calculs avec des vecteurs
#Créez deux vecteurs numériques.
x <- 1:5
# 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.
# C’est équivalent à écrire x <- c(1, 2, 3, 4, 5)
# Une autre façon équivalente est : x <- c(1:5).
y <- 6
# Faisons la somme des deux vecteurs.
# 6 est ajouté à tous les éléments du vecteur x.
x + y
#! [1]  7 8 9 10 11
#Multiplions x par lui-même.
x * x
#! [1]  1 4 9 16 25
#C’est la même chose que x au carré !
x^2
#! [1]  1 4 9 16 25

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
A1.01 5.6 17 Fertilise
A1.02 7.3 23 Fertilise
B1.01 4.1 15 Pas Fertilise
B1.02 6.0 17 Pas Fertilise

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').

Création d’un tableau de données
#On commence par créer les vecteurs.
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

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.

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.

Indexer un vecteur
#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.
vecteur.num<-c(1, 2, 5, 3, 6, -2, 4)
vecteur.car<-c("bleu", "rouge", "vert")
#Extraire le troisième élément du vecteur numérique.
 vecteur.num [3]
#! [1]  5
# Extraire tous les éléments du vecteur numérique sauf le troisième.
vecteur.num [-3]
#! [1]  1  2  3  6  -2  4
# Extraire les premier et troisième éléments du vecteur de caractères.
vecteur.car [c(1,3)]
#! [1]  "bleu"  "vert"
# Extraire les premier et quatrième éléments du vecteur de caractères.
#Il n’y a pas de quatrième valeur dans ce vecteur, donc R retourne une valeur nulle (i.e. NA).
#NA signifie 'Not available'.
vecteur.car [c(1,4)]
#! [1]  "bleu"  NA
#Extraire toutes les valeurs supérieures à 5 du vecteur numérique.
vecteur.num[vecteur.num > 5]
#! [1]  6
#Extraire tous les éléments correspondant exactement à « bleu » du vecteur de caractères.
#Prenez note de l’utilisation du double signe d’égalité ==.
vecteur.car [vecteur.car == "bleu"]
#! [1]  "bleu"



Défi 8
a) Extraire la quatrième valeur du vecteur numérique vecteur.num.
b) Extraire les première et troisièmes valeurs du vecteur numérique vecteur.num.
c) Extraire toutes les valeurs du vecteur numérique vecteur.num à l’exception des deuxième et quatrième valeurs.

Défi 8a : Indexer des vecteurs

Défi 8b : Indexer des vecteurs

Défi 8c : Indexer des vecteurs




Défi 9
Explorer la différence entre ces deux lignes de codes :
Différences entre codes
vecteur.car == "bleu"
vecteur.car[vecteur.car == "bleu"]

Défi 9 : Différences entre codes



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.

Indexer un tableau de données
#Réutilisons le tableau de données créé précédemment (mon.premier.tab)
#Extraire la première ligne du tableau de données.
mon.premier.tab[1,]
#Extraire la troisième colonne du tableau de données.
mon.premier.tab[,3]
#Extraire le deuxième élément de la quatrième colonne du tableau de données.
mon.premier.tab[2,4]
#Extraire les lignes 2 à 4 du tableau de données.
mon.premier.tab[c(2:4),]
#Extraire la colonne « Code_Site » en référant directement à son nom.
#Le signe de dollar ($) permet une telle opération !
mon.premier.tab$Code_Site
#Extraire les variables « Code_Site » et « pH.sol ».
mon.premier.tab[,c("Code_Site","pH.sol")]



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

Défi 10b : Déclaration logique



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
< plus petit que
<= plus petit ou égal à
> plus grand que
>= plus grand ou égal à
== exactement égal à
!= pas égal à
x | y x OU y
x & y x ET y

Les exemples suivants illustrent comment utiliser ces opérateurs de manière appropriée.

Évaluer des déclarations logiques
#Commençons par créer deux vecteurs à comparer.
x2 <- c(1: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).
x2 >= 3
#! [1] FALSE FALSE TRUE TRUE TRUE
#Vérifions si les éléments de x2 sont exactement égaux à ceux de y.
x2 == y2
#! [1] TRUE TRUE FALSE TRUE TRUE
#Est-ce que 3 n’est pas égal à 4? Bien sûr!
3 != 4
#! [1] TRUE
#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 !

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.

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).

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 :

nom_de_la_fonction(arg1, arg2, …)

Voyons l'exemple de la fonction sum qui permet de faire la somme de deux ou plusieurs nombres.

Syntaxe d'une fonction
sum(1, 2)
#! [1] 3

Les arguments sont des valeurs utilisées comme instructions pour que la fonction puisse retourner un résultat. Les objets peuvent être utilisés comme arguments :

Les objets comme arguments
a <- 3
b <- 4
sum(a, b)
#! [1] 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 7.


Défi 11
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

- Ajoutez a à b en utilisant l'opérateur + et enregistrez le résultat dans un objet appelé result_add

- Ajoutez a à b en utilisant la fonction sum() et enregistrez le résultat dans un objet appelé result_sum

- Comparez les objets result_add et result_sum. Sont-ils différents?

b) Ajoutez 5 à result_sum en utilisant la fonction sum().

Défi 11a : Appeler des fonctions

Défi 11b : Appeler des fonctions



Tous les arguments ont un nom qui peut être indiqué lorsqu'on appelle une fonction.
Si le nom n'est pas indiqué, l'ordre des arguments est primordial.
Si le nom est indiqué, l'ordre des arguments n'a pas d'importance.

Pour indiquer le nom d'un argument lors d'un appel de fonction, il suffit simplement de l'écrire de la façon suivante : nom_argument=valeur.

Nom d'argument
log(x=8, base=2)



Défi 12
plot(x, y) est une fonction qui crée un graphique de y en fonction de x. Cette fonction nécessite deux arguments nommés x et y. Quelles sont les différences entre les lignes de codes suivantes ?
Défi 12
a <- 1:100
b <- a^2
plot(a, b)
plot(b, a)
plot(x=a, y=b)
plot(y=b, x=a)

Défi 12 : Noms d'arguments



À titre de référence, voici une liste de fonctions communément utilisées dans R :

sqrt, log, exp, max, min, sum, mean, sd, var, summary, plot, par, paste, format,
head, length, str, names, typeof, class, attributes, library, ls, rm, setwd, getwd, file.choose,
c, seq, rep, tapply, lapply, aggregate, merge, cbind, rbind, unique,
help (or ?), help.search (or ??), help.start


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 paquets et les rendre disponibles aux autres utilisateurs de R.

Les paquets sont généralement disponibles via le Comprehensive R Archive Network (CRAN)http://cran.r-project.org/web/packages/.

Actuellement, plus de 5877 paquets sont disponibles librement.

Pour installer des paquets dans R, il suffit d'utiliser la fonction install.packages() :

Installation d'un paquet
install.packages("ggplot2")

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.

qplot(1:10, 1:10)

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 :

Erreur: impossible de trouver la fonction “qplot”

Pour utiliser la fonction qplot(), il faut charger le paquet ggplot2 avant d'appeler cette fonction.

library("ggplot2")
qplot(1:10, 1:10)

La fonction peut maintenant être trouvée par R et l'exécution de cette fonction retourne le graphique suivant :

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:

Déchargement d'un paquet
detach(package:ggplot2)

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.

Par contre, il n'est pas toujours facile de savoir quelle fonction utliser 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 :

Recherche d'une fonction
??sequence

Cette commande ouvre la fenêtre suivante :


Note : les résultats d'une recherche dépendent des paquets installés sur votre ordinateur.

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.
  • À 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 !

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.
Note : Le paquet base comporte des fonctions de base qui se chargent automatiquement lorsqu'on lance R. Elles sont donc toujours disponibles.

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 ?

Pour répondre à ces questions, il faut accéder à la page d'aide de cette fonction. Pour ce faire, il faut utiliser l'opérateur ? ou la fonction help() de la manière suivante : ?nom_de_la_fonction

Voici un exemple pour la fonction seq() :

Trouver de l'aide
?seq

Cette commande ouvre la page suivante :


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.)

  • 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.
  • 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().
  • Détails: Fournit une description détaillée du fonctionnement de la fonction. Des cas spécifiques peuvent être discutés ici en plus de fournir des informations supplémentaires.
  • Valeur: Explique les valeurs de retour de la fonction.
  • Références: Les sources utilisées comme base de la fonction ou des lectures intéressantes sur le sujet.
  • 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.



Défi 13
a) Créez une séquence de nombres pairs de 0 à 10 en utilisant la fonction seq().

b) - Créez un vecteur de vos nombres préférés sans qu'il ne soit en ordre croissant ou décroissant.
- Trouvez comment mettre ce vecteur en ordre en tapant ?sort à la console.
- Ordonnez votre vecteur en ordre décroissant.

Défi 13a

Défi 13b



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.).

Voici quelques conseils pour une recherche efficace :

  • Faites vos recherches en anglais.
  • Utilisez le mot-clé “R” au début de votre recherche.
  • Définissez précisément ce que vous cherchez.
  • 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 stackexchange.
  • N'hésitez pas à faire des recherches avec des mots-clés différents!



Défi 14
Trouvez la fonction appropriée pour effectuer les opérations suivantes :

a) Calculer la racine carrée d'un nombre
b) Calculer la moyenne de nombres
c) Combiner des tableaux de données par colonne (i.e. un par-dessus l'autre)
d) Faire une liste de tous les objets de la session

Défi 14



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