< Programmer en R

Cette section constitue une rapide introduction à R.

Manipuler des nombres

On peut facilement réaliser les opérations standards dans R.

> 1+1
[1] 2
> 2*3
[1] 6
> 2/3
[1] 0.6666667
> 2^3
[1] 8

Manipuler du texte

Pour différencier les chaînes de caractères (ie le texte) des nombres, il suffit d'utiliser les guillemets.

> "ceci est une chaîne de caractère"
[1] "ceci est une chaîne de caractère"

Enregistrer des données

Pour assigner une valeur à un objet, on utilise l'opérateur <-

> x <- 5

On peut ensuite afficher la valeur :

> print(x)
[1] 5

On peut aussi utiliser cet objet dans d'autres calculs :

> x + 1
[1] 6

Vecteurs

Un vecteur est une suite de valeur de même type. Par exemple, on peut avoir un vecteur de nombres ou un vecteur de chaînes de caractères.

La fonction c() permet de construire un vecteur.

> prix <- c(1.90, 3.50, 14.90)
> prix
[1]  1.9  3.5 14.9
> fruit <- c("pomme", "poire", "fraise")
> fruit
[1] "pomme"  "poire"  "fraise"

On peut accéder à un élément du vecteur en utilisant les crochets et le numéro de l'élément.

> fruit <- c("pomme", "poire", "fraise")
> fruit[1]
[1] "pomme"
> fruit[1:2]
[1] "pomme" "poire"
> fruit[1:3]
[1] "pomme"  "poire"  "fraise"
> fruit[c(1,3)]
[1] "pomme"  "fraise"

Matrices

Une matrice est formée à partir d'un vecteur, en précisant le nombre de lignes et/ou de colonnes. Par exemple :

> A <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2)
> print(A)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> B <- array(1:6, dim = c(3, 2))
> print(B)
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

On peut aussi assembler des vecteurs-ligne (row bind) :

> A <- rbind(c(1, 3, 5), c(2, 4, 6)); print(A)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Les opérations algébriques élémentaires sont les suivantes :

> A %*% B # produit matriciel
     [,1] [,2]
[1,]   22   49
[2,]   28   64
> aperm(A, c(2, 1)) # transposition
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
> A*A # produit terme à terme
     [,1] [,2] [,3]
[1,]    1    9   25
[2,]    4   16   36

Tableaux de données

Souvent en statistiques, on manipule des données sous forme de tableaux. En R, les tableaux de données sont appelés data.frame.

> table_fruits <- data.frame(
+     fruit = c("pomme", "poire", "fraise"), 
+     prix = c(1.90, 3.50, 14.90)
+ )
> 
> table_fruits
   fruit prix
1  pomme  1.9
2  poire  3.5
3 fraise 14.9

Pour accéder à la colonne prix, on peut utiliser :

  • utiliser la syntaxe des crochets et indiquer le nom de la colonne après la virgule
  • utiliser la syntaxe des crochets et indiquer le numéro de la colonne après la virgule
  • appeler la colonne en utilisant la syntaxe nom_du_tableau$nom_de_la_variable
> table_fruits[,"prix"] 
[1]  1.9  3.5 14.9
> table_fruits[,2]
[1]  1.9  3.5 14.9
> table_fruits$prix 
[1]  1.9  3.5 14.9

Pour accéder à la deuxième ligne, on utilise la syntaxe des crochets :

table_fruits[2,]
> table_fruits[2,]
  fruit prix
2 poire  3.5

Pour en savoir plus, sur la manière dont on manipule un tableau de données, on peut lire la section Manipuler un tableau de données.

Obtenir de l'aide

On peut obtenir de l'aide sur une fonction avec la commande help("")

> help("abs")
> help("^")

ou bien avec le point d'interrogation

> ?abs
> ?"^"

Le point d'interrogation recherche dans toutes les librairies importées. Pour chercher dans toutes les librairies installées sur le système, on utilise ??

>??select

Installer et charger une librairie

R contient de nombreuses librairies développées par la communauté. Pour installer une librairie, on utilise la fonction install.packages() et pour la charger dans R, on utilise la fonction library(). Par exemple, on peut installer et charger la librarie dplyr.

install.packages("dplyr")
library("dplyr")

L'opérateur tube

Traditionnellement, les arguments d'une fonction sont mis entre parenthèse après le nom de la fonction et on peut composer les fonctions en imbriquant des fonctions dans des fonctions. Par exemple :

> exp(5)
[1] 148.4132
> log(exp(5))
[1] 5

Lorsqu'on enchaîne de nombreuses fonctions, cette syntaxe peut poser des problèmes de lisibilité du code. L'opérateur tube %>% (ou pipe) a été introduit par le développeur Stefan Milton Bache dans la librairie magrittr. Cet opérateur est importé par défaut dans de nombreuses librairies comme dplyr et permet de rendre le code plus lisible. Cet opérateur est très pratique lorsqu'on enchaîne plusieurs fonctions à la suite[1].

> 5 %>% exp()
[1] 148.4132
> 5 %>% exp() %>% log()
[1] 5

Notes et références

  1. http://r4ds.had.co.nz/pipes.html

Voir aussi

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.