2.1 Écrire du code en R
R est un langage interprété (angl. interpreted language), ce qui signifie que vous devez saisir des commandes pour effectuer des opérations (par exemple des calculs). Programmer ou coder consiste à écrire des commandes. À votre demande, R tentera d'exécuter ces commandes. Ce chapitre donne un aperçu du langage R. Vous apprendrez comment les opérations élémentaires sont effectuées et interprétées.
L'analyse de données consiste à utiliser la mémoire et les fonctions mathématiques de l'ordinateur pour stocker des données, les manipuler et effectuer des calculs. Les ordinateurs sont compliqués. R est simple. Vous n'apprendrez donc que les bases du fonctionnement de R avec votre ordinateur. Au fond, vous indiquerez à R (en exécutant des commandes R) d'ordonner à votre ordinateur d'effectuer des opérations. Voici une opération très simple, dans laquelle nous allons demander à l'ordinateur d'additionner les nombres 1+9.
1+9[1] 10Comme vous le voyez ci-dessus dans la sortie, R renvoie la valeur 10 comme premier résultat (indiqué par ). Nous n'avons enregistré aucune information dans cet exemple, mais nous aurions pu le faire. Considérez l'exemple suivant, dans lequel nous enregistrons d'abord le nombre 1 dans un objet nommé mynumber et le nombre 9 dans un objet nommé your_number. Nous utilisons l'opérateur R spécial <- pour assigner les nombres aux objets. L'opérateur <- se prononce gets. Ensuite, nous additionnons ces nombres et obtenons le même résultat que ci-dessus :
my_number <- 1
your_number <- 9
my_number + your_number[1] 10Dans le deuxième exemple, nous avons enregistré la valeur 1 dans la mémoire de notre ordinateur. Pour cela, nous avons assigné 1 à un objet R que nous avons nommé my_number. my_number est donc un objet R. Vous pouvez accéder à l'objet à tout moment, puisqu'il est enregistré dans la mémoire de l'ordinateur.
Que se passerait-il si vous multipliiez votre_nombre par 10 ? Essayons :
10*your_number[1] 90Le résultat est 90. R a enregistré le nombre 9 dans la mémoire de l'ordinateur et multiplie maintenant ce nombre par 10, ce qui donne 90. Divisons plutôt les nombres :
my_number/your_number[1] 0.1111111Vous pouvez en fait utiliser R comme une calculatrice, comme le montre cet exemple :
(100-(10*9))/2[1] 5Essayons un nouvel exemple dans lequel nous demandons à R d'afficher tous les nombres entre 1 et 100. Nous utiliserons pour cela l'opérateur deux-points (:), qui indique à R de créer une séquence d'entiers de 1 à 100 :
1:100 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
[91] 91 92 93 94 95 96 97 98 99 100Vous remarquerez que le premier nombre de chaque ligne est placé entre crochets (, , , , , ). Ces nombres ne sont que des repères qui indiquent par quelle valeur la ligne commence. Ainsi, la deuxième ligne commence par la 18e valeur de la série. Vous pouvez généralement ignorer les nombres affichés entre crochets.
2.2 Commandes incomplètes
Si vous saisissez une commande incomplète et appuyez sur Entrée, R affichera l'invite + sur la ligne suivante, ce qui signifie que R attend que vous saisissiez la suite de votre commande. Terminez la commande ou appuyez sur Échap pour recommencer. Dans l'exemple ci-dessous, nous saisissons 5- sur la première ligne et appuyons sur Entrée. R affiche l'invite + sur la ligne suivante afin que nous puissions indiquer ce que nous voulons soustraire du nombre 5. Nous saisissons le nombre 1 et appuyons sur Entrée, ce qui donne le nombre 4.
> 5 -
+
+ 1
[1] 42.3 Interrompre des commandes
Certaines commandes R peuvent prendre beaucoup de temps à s'exécuter. Vous pouvez interrompre une commande une fois lancée en appuyant sur ctrl + c. Notez que R peut lui aussi mettre longtemps à interrompre la commande.
2.4 Messages d'erreur
Un code qui ne fonctionne pas, quelle qu'en soit la raison, renverra une erreur. Une erreur signifie simplement que R ne peut pas interpréter la commande. Les erreurs doivent être corrigées en modifiant le code. La plupart des erreurs sont dues à de simples fautes de frappe, mais elles peuvent bien sûr être plus complexes. Les erreurs sont précédées de « Erreur dans… », suivi d'une explication qui peut, ou non, aider à corriger l'erreur. Nous allons maintenant saisir une commande comportant une faute de frappe :
librar(tidyverse)Error in librar(tidyverse) : could not find function "librar"L'erreur vient du fait que nous avons mal orthographié library en library. La commande correcte est :
library(tidyverse)2.5 Commenter le code
Il est important d'écrire des commentaires au fil du code. Presque tous les langages informatiques permettent d'écrire des commentaires à l'aide de symboles spéciaux. R utilise le symbole dièse (#) pour les commentaires. Tout ce qui suit un dièse sur une ligne est ignoré par R. Les commentaires ne sont donc interprétés que par des humains, jamais par l'ordinateur.
2.6 Avertissements et messages
- Avertissements : Votre code peut parfois renvoyer un avertissement, ce qui signifie que les commandes ont été exécutées mais que quelque chose requiert votre attention. Par exemple, si vous créez un graphique et que certaines valeurs sont manquantes, vous pouvez obtenir un avertissement indiquant : Avertissement : 13 lignes contenant des valeurs manquantes ont été supprimées. Cet avertissement vous informe donc simplement que le résultat ne représente peut-être pas toutes les observations de vos données.
- Messages : Les messages contiennent des informations sans gravité. Par exemple, lorsque vous chargez un package, vous pouvez obtenir un message contenant des informations sur les mises à jour du package, sa version, etc.
2.7 Vecteurs (Vectors)
Un vecteur est une séquence d'éléments de données du même type de base. Les vecteurs sont essentiels en R et ils n'ont rien de compliqué. Voici un vecteur contenant les nombres 1, 2, 3, 4 et 5. Nous créons le vecteur avec la fonction c (), où c est l'abréviation de combiner.
c(1, 2, 3, 4, 5)[1] 1 2 3 4 5Nous aurions pu gagner un peu de place en utilisant l'opérateur deux-points (:) :
c(1:5)[1] 1 2 3 4 5Et voici un vecteur de chaînes de caractères.
c("David", "Maria", "Mohamed", "Singh", "Lana")[1] "David" "Maria" "Mohamed" "Singh" "Lana"2.8 Objets (Objects)
Dans les exemples ci-dessus, nous avons créé des vecteurs, mais nous ne les avons jamais stockés dans la mémoire de notre ordinateur. Pour les stocker, nous devons créer un objet R, ce que nous faisons avec l'opérateur d'assignation <-. Nous allons maintenant créer un objet nommé my_numbers :
my_numbers <- c(1, 2, 3, 4, 5)Nous disposons maintenant d'un objet R (my_numbers) que nous pouvons réutiliser et manipuler. Qu'est-ce qu'un objet R ? Simplement un nom que vous pouvez utiliser pour faire référence à des données stockées. Lorsque vous utilisez le nom de l'objet dans votre code R, R remplace le nom de l'objet par les données qui y sont stockées. Considérez l'exemple ci-dessous, dans lequel nous stockons le nombre 100 dans un objet nommé my_number, puis saisissons my_number comme commande et appuyons sur Entrée.
my_number <- 100
my_number[1] 1002.8.1 Comment créer des objets en R
Pour créer un objet R, choisissez un nom, puis utilisez l'opérateur d'assignation <- pour lui transmettre des données. Cette combinaison ressemble à une flèche, <-. R créera un objet contenant tout ce qui se trouve à droite de l'opérateur <-. Pour voir ce qui est stocké dans un objet, saisissez simplement le nom de l'objet et appuyez sur Entrée.
2.8.2 Où voir mes objets dans R ?
Tous les objets s'affichent dans le volet Environment de RStudio, comme le montre la Figure 2.1. Ce volet affiche tous les objets que vous avez créés depuis l'ouverture de RStudio.

2.8.3 Nommer des objets en R
Vous pouvez donner à un objet R presque n'importe quel nom, mais il existe quelques règles. Premièrement, un nom ne peut pas commencer par un chiffre. Deuxièmement, un nom ne peut contenir aucun symbole spécial, comme ^,! , $, @, +, -,/ou * :
| Autorisé | Non autorisé |
|---|---|
| a | 1per |
| b | $ |
| FOO | ^dia |
| my_var | 5th |
| .day | !bad |
| my.object | ?var |
Noms d'objets autorisés et non autorisés en R.
2.9 R est sensible à la casse (case sensitive)
R est sensible à la casse : income et Income désigneront donc des objets différents. R est en fait sensible à la casse en permanence, ce qui signifie que vous devez respecter la casse dans tous les cas (que vous fassiez référence à des objets ou utilisiez des fonctions). Si vous essayez d'utiliser la fonction survival () en écrivant Survival (), vous obtiendrez une erreur.
2.10 R écrase les objets
Si vous créez un objet et écrasez plus tard les informations qu'il contient, R ne vous demandera pas d'autorisation. Gardez cela à l'esprit lorsque vous créez et nommez des objets. L'exemple ci-dessous montre comment nous écrasons l'objet my_number :
my_number <- 100
my_number <- 999
my_number[1] 999Vous pouvez utiliser la fonction ls () pour afficher tous les objets actuellement stockés dans votre environnement R :
ls()[1] "a" "my_number" "my_numbers" "your_number"2.11 Exécution élément par élément (element wise execution)
Créons un nouveau vecteur nommé new_numbers :
new_numbers <- c(1, 2, 3, 4, 5, 6)Nous allons maintenant voir ce qui se passe lorsque nous manipulons cet objet de différentes manières.
new_numbers/2[1] 0.5 1.0 1.5 2.0 2.5 3.0Comme vous pouvez le voir (ci-dessus), R a divisé chaque élément par 2.
new_numbers-1[1] 0 1 2 3 4 5Comme vous pouvez le voir (ci-dessus), R a soustrait 1 de chaque élément.
Ainsi, lorsque vous manipulez un vecteur ou un objet, R effectue la même opération pour chaque élément du vecteur.
Si vous utilisez deux vecteurs ou plus dans une opération, R aligne les vecteurs et effectue une séquence d'opérations individuelles. Par exemple, lorsque vous exécutez new_numbers * new_numbers, R aligne les deux vecteurs new_numbers, puis multiplie le premier élément du vecteur 1 par le premier élément du vecteur 2. R multiplie ensuite le deuxième élément du vecteur 1 par le deuxième élément du vecteur 2, et ainsi de suite, jusqu'à ce que chaque élément ait été multiplié. Le résultat est un nouveau vecteur de même longueur que les deux premiers, comme illustré ci-dessous :
new_numbers*new_numbers[1] 1 4 9 16 25 36Si vous donnez à R deux vecteurs de longueurs différentes, R répétera le vecteur le plus court jusqu'à ce qu'il soit aussi long que le plus long, puis effectuera le calcul.
a <- c(2)
b <- c(4, 4, 4, 4)
a*b[1] 8 8 8 82.12 Scripts
Un script R est simplement un fichier texte (avec l'extension .R) qui contient toutes les commandes que vous souhaitez exécuter. Ces commandes se suivent généralement, ce qui signifie que les lignes sont exécutées l'une après l'autre. Vous écrirez presque toujours votre code R dans des scripts plus longs. Pour créer un nouveau script R, allez dans le menu principal de RStudio et choisissez Fichier > Nouveau fichier > R Script. Cela ouvre un nouveau fichier texte que vous pouvez ensuite enregistrer via Fichier > Enregistrer sous (l'extension est .R). Voici un exemple de court script R :
my_numbers <- >c(1, 1, 1, 1)
your_numbers <- c(2, 2, 2, 2)
our_numbers <- my_numbers+your_numbers
our_mean <- mean(our_numbers)
## paste() sert à concaténer des chaînes de caractères</em>
paste("The mean of my numbers is: ", our_mean)[1] "The mean of my numbers is: 3"Vous pouvez exécuter ces lignes une par une en sélectionnant chaque ligne et en appuyant sur le bouton Run (ou en appuyant sur Ctrl+Entrée sous Windows et Cmd+Entrée sur Mac). Vous pouvez aussi sélectionner toutes les lignes et les exécuter en une seule fois en appuyant sur le bouton Run.
Les scripts rendent votre travail reproductible. Ils vous permettent de réexécuter votre code à tout moment et d'obtenir à nouveau les mêmes résultats. Vous pouvez aussi ajuster ou corriger votre code, puis l'exécuter à nouveau. Imaginez une situation dans laquelle vous devez refaire toute l'analyse en excluant les hommes de l'étude : il suffit pour cela d'ajuster une ligne ou deux, puis de réexécuter le script.