0% ont trouvé ce document utile (0 vote)
14 vues63 pages

Bases de la programmation R

Ce chapitre introduit les notions de base du langage de programmation R telles que les expressions, les affectations, les objets, les opérateurs et les fonctions. Il décrit également les commandes R, les conventions pour les noms d'objets, les différents modes et types de données ainsi que la longueur des objets.

Transféré par

Abdoulahi Gueye
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues63 pages

Bases de la programmation R

Ce chapitre introduit les notions de base du langage de programmation R telles que les expressions, les affectations, les objets, les opérateurs et les fonctions. Il décrit également les commandes R, les conventions pour les noms d'objets, les différents modes et types de données ainsi que la longueur des objets.

Transféré par

Abdoulahi Gueye
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 2 : Les bases de la

programmation R
M. Fall

1
Introduction
• Pour utiliser un langage de programmation, il faut en connaître la syntaxe et la
sémantique, du moins dans leurs grandes lignes.
• C’est dans cet esprit que ce chapitre introduit des notions de base du langage R
telles que l’expression, l’affectation, l’objet, les opérateurs, les fonctions, etc.

2
Commandes R
• L’utilisateur de R interagit avec l’interprète R en entrant des commandes à
l’invite de commande.
• Toute commande R est soit une expression, soit une affectation.
• Normalement, une expression est immédiatement évaluée et le résultat est
affiché à l’écran :
>2+3
[1] 5
> pi
[1] 3.141593
> cos(pi/4)
[1] 0.7071068

3
Commandes R
Affectation
• Lors d’une affectation, une expression est évaluée, mais le résultat est stocké dans un
objet (variable) et rien n’est affiché à l’écran.
> a <- 5
• Le symbole d’affectation est <- >a
[1] 5
> b <- a
>b
[1] 5
• Pour affecter le résultat d’un calcul dans un objet et simultanément afficher ce
résultat, il suffit de placer l’affectation entre parenthèses pour ainsi créer une nouvelle
expression > (a <- 2 + 3)
• Le symbole d’affectation inversé -> existe aussi, mais il est rarement utilisé.
Remarque
• Éviter d’utiliser l’opérateur = pour affecter une valeur à une variable puisque cette
pratique est susceptible d’engendrer de la confusion avec les constructions nom =
valeur dans les appels de fonction. 4
Commandes R
Séparation des commandes
• Que ce soit dans les fichiers de script ou à la ligne de commande, on sépare les
commandes R les unes des autres par un point-virgule ou par un retour à la
ligne (touche ENTER).
• Le point-virgule peut être utile pour séparer deux courtes expressions ou plus sur
une même ligne :

> a <- 5; a + 2

5
Commandes R
• On peut regrouper plusieurs commandes en une seule expression en les
entourant d’accolades { }.
• Le résultat du regroupement est la valeur de la dernière commande :
>{
+ a <- 2 + 3
+ b <- a
+b
+}
[1] 5
• Par conséquent, si le regroupement se termine par une assignation, aucune
valeur n’est retournée ni affichée à l’écran : > {
+ a <- 2 + 3
+ b <- a
+}
• Comme on peut le voir ci-dessus, lorsqu’une commande n’est pas complète à la
fin de la ligne, l’invite de commande de R change de > à + pour nous inciter à
compléter notre commande. 6
Conventions pour les noms d’objets
• Les caractères permis pour les noms d’objets sont les lettres
minuscules a–z et majuscules A–Z, les chiffres 0–9, le point « . » et le
caractère de soulignement «_».
• Le R est sensible à la casse, ce qui signifie que Age, age et AGE sont
trois objets distincts.

7
Conventions pour les noms d’objets
Mots réservés
• Certains noms sont utilisés par le système R, aussi vaut-il mieux éviter
de les utiliser.
c, q, t, C, D, I, diff, length, mean, pi, range, var.
• Certains mots sont réservés et il est interdit de les utiliser comme nom d’objet.
Les mots réservés pour le système sont :
break, else, for, function, if, in, next, repeat, return, while,
TRUE, FALSE,
Inf, NA, NaN, NULL,
NA_integer_, NA_real_, NA_complex_, NA_character_, 1, ..2, etc.

8
Conventions pour les noms d’objets
Les booléens
• Les variables T et F prennent par défaut les valeurs TRUE et FALSE,
respectivement, mais peuvent être réaffectées :
>T
[1] TRUE
>F
[1] FALSE
> TRUE <- 3
Error in TRUE <- 3 : membre gauche de l'assignation
(do_set) incorrect
>(T <- 3)
[1] 3
• Il est recommandé de toujours écrire les valeurs booléennes TRUE et FALSE au
long pour éviter des bogues difficiles à détecter.
9
Les objets R

10
Les objets R
• Tout dans le langage R est un objet : les variables contenant des données, les
fonctions, les opérateurs, même le symbole représentant le nom d’un objet est
lui-même un objet.
• Les objets possèdent au minimum un mode et une longueur et certains peuvent
être dotés d’un ou plusieurs attributs
• Le mode d’un objet est obtenu avec la fonction mode : > v <- c(1, 2, 5, 9)
> mode(v)
[1] "numeric"

• La longueur d’un objet est obtenue avec la fonction length :


> length(v)
[1] 4
11
Modes et types de données
• Le mode d’un objet est la nature des éléments qui le composent, leur type.
• On y accède par la fonction mode() ou class() ou encore typeof().
• À chaque mode correspond une fonction du même nom servant à créer un objet
de ce mode.
• Les objets de mode "numeric", "complex", "logical" et "character“ sont des
objets simples (atomic en anglais) qui ne peuvent contenir que des données d’un
seul type.

• La fonction typeof permet d’obtenir une description plus précise de la


représentation interne d’un objet

• Le mode et le type d’un objet sont identiques.


12
Modes et types de données
numeric (numérique)
• On distingue deux types numériques, à savoir les integers (entiers) et les double ou real
(réels). a <- 2.0
typeof(a)
## [1] "double"
[Link](a) # a est un réel, pas un entier.
## [1] FALSE
b <- 2
typeof(b)
## [1] "double"
c <- [Link](b)
typeof(c)
## [1] "integer"
[Link](c) # c est bien un numérique.
## [1] TRUE

• La fonction [Link]() retourne TRUE lorsque l’objet qui est fourni en paramètre est un
entier, FALSE sinon.
• De manière plus générale, les instructions commençant par is. et suivies du nom d’un
mode permettent de tester si l’objet indiqué en paramètre est de ce mode 13
Modes et types de données
a <- "Hello world!"
character (caractère). a
• Les chaînes de caractères sont placées entre ## [1] "Hello world!"
guillemets simples ‘ ou doubles ". typeof(a)
## [1] "character"

logical (logique, booléen) ; a <- 1 ; b <- 2


a<b
• Les données de type logique peuvent prendre ## [1] TRUE
deux valeurs : TRUE ou FALSE. Elles répondent à a == 1 # Test d'égalité
une condition logique. ## [1] TRUE
a != 1 # Test d'inégalité
## [1] FALSE
[Link](a)
## [1] FALSE
(a <- TRUE)
## [1] TRUE
(a <- T)
## [1] TRUE 14
Modes et types de données
complex (complexe).
• Les nombres complexes sont caractérisés par leur partie réelle, que l’on peut
obtenir à l’aide de la fonction Re() ; et par leur partie imaginaire, que l’on obtient
grâce à la fonction Im(). On créé un nombre complexe à l’aide de la lettre i.
1i
## [1] 0+1i
z <- 2+3i
Re(z) # Partie réelle de z
## [1] 2
Im(z) # Partie imaginaire de z
## [1] 3
Mod(z) # Module de z
## [1] 3.605551
Arg(z) # Argument de z
## [1] 0.9827937
15
Longueur
• La longueur d’un objet est égale au nombre d’éléments qu’il contient.
• La longueur, au sens R du terme, d’une chaîne de caractères est toujours
1.
• Un objet de mode character doit contenir plusieurs chaînes de caractères
> v1 <- "actuariat"
pour que sa longueur soit supérieure à 1 : > length(v1)
[1] 1
> v2 <- c("a", "c", "t", "u", "a", "r", "i", "a", "t")
> length(v2)
[1] 9

• Il faut utiliser la fonction nchar pour obtenir le nombre de caractères


dans une chaîne : > nchar(v1)
[1] 9 > v <- numeric(0)
> nchar(v2) > length(v)
[1] 1 1 1 1 1 1 1 1 1 [1] 0
• Un objet peut être de longueur 0 et doit alors être interprété comme un
contenant qui existe, mais qui est vide : 16
Objet spécial NULL
• L’objet spécial NULL représente « rien », ou le vide.
• Son mode est NULL.
• Sa longueur est 0.
• Toutefois différent d’un objet vide :
• un objet de longueur 0 est un contenant vide ;
• NULL est « pas de contenant ».
• La fonction [Link] teste si un objet est NULL ou non.

17
Valeurs manquantes, indéterminées et infinies
• Dans les applications statistiques, il est souvent utile de pouvoir représenter des
données manquantes.
• Dans R, l’objet spécial NA remplit ce rôle.
• Par défaut, le mode de NA est logical, mais NA ne peut être considéré ni comme
TRUE, ni comme FALSE.
• Toute opération impliquant une donnée NA a comme résultat NA.
• Certaines fonctions (sum, mean, par exemple) ont par conséquent un argument
[Link] qui, lorsque TRUE, élimine les données manquantes avant de faire un
calcul.
• La valeur NA n’est égale à aucune autre, pas même elle-même (selon la règle ci-
dessus, le résultat de la comparaison est NA) : > NA == NA
[1] NA
• Par conséquent, pour tester si les éléments d’un objet sont NA ou non il
• faut utiliser la fonction [Link] : > [Link](NA)
[1] TRUE 18
Vecteurs

19
Les vecteurs
• En R, à toutes fins pratiques, tout est un vecteur.
• Contrairement à certains autres langages de programmation, il n’y a pas de
notion de scalaire en R ; un scalaire est simplement un vecteur de longueur 1.
• Le vecteur est l’unité de base dans les calculs.
• Dans un vecteur simple, tous les éléments doivent être du même mode.
• Les fonctions de base pour créer des vecteurs sont :
• c : concaténation;
• numeric : vecteur de mode numeric ;
• logical : vecteur de mode logical;
• character : vecteur de mode character.

20
Vecteurs
• Il est possible et souvent souhaitable de donner une étiquette à chacun des
éléments d’un vecteur.
> (v <- c(a = 1, b = 2, c = 5))
a b c
1 2 5
> v <- c(1, 2, 5)
> names(v) <- c("a", "b", "c")
>v
a b c
1 2 5
• Ces étiquettes font alors partie des attributs du vecteur.

21
Vecteurs
• L’indiçage dans un vecteur se fait avec les crochets [ ].
• On peut extraire un élément d’un vecteur par sa position ou par son étiquette, si
elle existe.
> v[3]
C
5
> v["c"]
C
5

22
Exercice
• Créer le vecteur v des entiers compris entre 5 et 13
• Quelle est la longueur de v
• Ajouter au vecteur v deux éléments sans valeurs (NA)
• Calculer la moyenne des éléments de v (fonction mean)
• Créer le vecteur noms contenant au moins 3 noms d’étudiants
• Quelle la longueur de noms (nombre d’éléments)
• Donner la longueur (nombre de caractères) de chaque nom du vecteur noms

• Créer un vecteur, marie, de 5 booléens et un autre, adresse, de 5 chaines de caractères


• Nommer les éléments de chacun des vecteurs ci-dessus par des valeurs de votre choix.
• Créer en nommant les éléments (par les noms des personnes concernées) un vecteur
age contenant des âges de 5 étudiants
• Renommer les éléments des vecteurs marie et adresse avec les noms des éléments du
vecteur age.
• Afficher les deux derniers éléments du vecteur age en utilisant les noms
23
Matrices et tableaux

24
Matrices
• Le R étant un langage spécialisé pour les modélisations mathématiques, il
supporte la manipulation des matrices
• Une matrice est un vecteur avec un attribut dim de longueur 2.
• Cela change implicitement la classe de l’objet pour "matrix" et, de ce fait,
• le mode d’affichage de l’objet ainsi que son interaction avec plusieurs opérateurs
et fonctions.

25
Matrices
• La fonction de base pour créer des matrices est matrix :

> matrix(1:6, nrow = 2, ncol = 3)


[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
• La fonction matrix a un argument byrow qui permet d’inverser l’ordre de
remplissage.
> matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6

26
Matrices : extraction
• On extrait un élément d’une matrice en précisant sa position dans chaque
dimension de celle-ci, séparées par des virgules :
> (m <- matrix(c(40, 80, 45, 21, 55, 32), nrow = 2, ncol = 3))
[,1] [,2] [,3]
[1,] 40 45 55
[2,] 80 21 32
> m[1, 2]
[1] 45

• On peut aussi ne donner que la position de l’élément dans le vecteur


sousjacent : > m[3]
[1] 45
• Lorsqu’une dimension est omise dans les crochets, tous les éléments de
cette dimension sont extraits : > m[2, ]
[1] 80 21 32 27
Fusion de matrices
• Des fonctions permettent de fusionner des matrices ayant au moins une
dimension identique.
• La fonction rbind permet de fusionner verticalement deux matrices (ou plus)
ayant le même nombre de colonnes.
> n <- matrix(1:9, nrow = 3)
> rbind(m, n)
[,1] [,2] [,3]
[1,] 40 45 55
[2,] 80 21 32
[3,] 1 4 7
[4,] 2 5 8
[5,] 3 6 9

28
Fusion de matrices
• La fonction cbind permet de fusionner horizontalement deux matrices (ou plus)
ayant le même nombre de lignes.

> n <- matrix(1:4, nrow = 2)


> cbind(m, n)
[,1] [,2] [,3] [,4] [,5]
[1,] 40 45 55 1 3
[2,] 80 21 32 2 4

29
Exercices
• Créer une matrice M1(4x5) d’entiers
• Créer une matrice M2(4x3) contenant les entiers de 10 à 21 et ranger les
éléments par ligne
• Créer une matrice M3(2x5) contenant des nombres aléatoires compris entre 60
et 69 (fonction sample)
• Afficher le 1er élément de la 3ième ligne de M1
• Remplacer 1er élément de la 3ième ligne de M1 par le 2ième élément de la 1ère
colonne de M2
• Afficher tous les éléments de 3ième colonne de M3
• Créer la matrice MC qui est le résultat de la fusion de M1 et M2
• Créer la matrice MR qui est le résultat de la fusion de M1 et M3
• Extraire les 4ième et 7ième colonnes de MC.
30
Listes

31
Les listes
• La liste est le mode de stockage le plus général et polyvalent du langage R.
• Il s’agit d’un type de vecteur spécial dont les éléments peuvent être de
n’importe quel mode, y compris le mode list.
• Cela permet donc d’emboîter des listes, d’où le qualificatif de récursif pour ce
type d’objet.
• La fonction de base pour créer des listes est list :
> (x <- list(size = c(1, 5, 2), user = "Joe", new = TRUE))
$size
[1] 1 5 2
$user
[1] "Joe"
$new
[1] TRUE
• Ci-dessus, le premier élément de la liste est de mode "numeric", le second de
mode "character" et le troisième de mode "logical". 32
Les listes
• Il est recommandé de nommer les éléments d’une liste.
• En effet, les listes contiennent souvent des données de types différents et il
peut s’avérer difficile d’identifier les éléments s’ils ne sont pas nommés.
• De plus, comme nous le verrons ci-dessous, il est très simple d’extraire les
éléments d’une liste par leur étiquette.
• La liste demeure un vecteur. On peut donc l’indicer avec l’opérateur [ ].
• Cependant, cela retourne une liste contenant le ou les éléments indicés.
• C’est rarement ce que l’on souhaite.

33
Les listes
• Pour indicer un élément d’une liste et n’obtenir que cet élément, et non une liste
contenant l’élément, il faut utiliser l’opérateur d’indiçage [[ ]].
• Comparer > x[1]
$size
[1] 1 5 2
• Et > x[[1]]
[1] 1 5 2
• Évidemment, on ne peut extraire qu’un seul élément à la fois avec les crochets
doubles [[ ]].

• Si l’indice utilisé dans [[ ]] est un vecteur, il est utilisé récursivement pour indicer
la liste :
• cela sélectionnera la composante de la liste correspondant au premier élément du vecteur,
puis l’élément de la composante correspondant au second élément du vecteur, et ainsi de
suite 34
Les listes
• La meilleure façon d’indicer un seul élément d’une liste est par son
étiquette avec l’opérateur $ :
> x$size
[1] 1 5 2

• La fonction unlist convertit une liste en un vecteur simple.


• Elle est surtout utile pour concaténer les éléments d’une liste lorsque ceux-ci
sont des scalaires.

35
Exercices
• Créer une liste contenant trois éléments dont :
• Le nom de votre classe
• Les noms de 4 étudiants de votre classe
• Et la moyenne de la classe
• Afficher tous les éléments de la liste
• Afficher tous les noms des étudiants
• Afficher le nom de chaque étudiants un à un
• Afficher les noms du premier étudiant et du dernier étudiant
• Nommer les éléments du vecteur correspondant aux noms des étudiants par les
prénoms des étudiants concernés

• Afficher à nouveau les étudiants


36
Data frames

37
Data frames
• Les vecteurs, les matrices, et les listes sont les types d’objets les plus
fréquemment utilisés en programmation en R.
• Toutefois, un grand nombre de procédures statistiques (pensons à la régression
linéaire, par exemple ) repose davantage sur les data frames pour le stockage
des données.
• Un data frame est une liste de classe "[Link]" dont tous les éléments sont
de la même longueur
• Il est généralement représenté sous la forme d’un tableau à deux dimensions.
• Chaque élément de la liste sous-jacente correspond à une colonne.
• Bien que visuellement similaire à une matrice un data frame est plus général
puisque les colonnes peuvent être de modes différents ;
• pensons à un tableau avec des noms (mode character) dans une colonne et des notes
(mode numeric) dans une autre.
38
Data frames
• On crée un data frame avec la fonction [Link]() ou, pour convertir
un autre type d’objet en data frame, avec [Link]().
• Le data frame peut être indicé à la fois comme une liste et comme une
matrice.
• Les fonctions rbind et cbind peuvent être utilisées pour ajouter des
lignes ou des colonnes à un data frame.
Remarque
• L’élément distinctif entre un data frame et une liste générale, c’est que
tous les éléments du premier doivent être de la même longueur et
que, par conséquent, R les dispose en colonnes.
• Le dataframe est donc le type d’objet désigné pour stocker des données de modes
différents, mais qui se présentent sous forme de tableau à deux dimensions.
39
Exercices
• Créer 3 vecteurs nom, prenom et age contenant respectivement les noms,
prénoms et ages de 5 étudiants
• Créer un dataframe nommé etudiants à partir des 3 vecteurs précédents
• Afficher le dataframe etudiants
• Afficher les deux premières colonnes du dataframe
• Afficher le prénom du troisième étudiant
• Modifier l’age du 5ième étudiant et afficher la ligne de cet étudiant
• Ajouter un sixième étudiant au dataframe
• Ajouter une colonne adresse avec des valeurs au dataframe

40
Indexation

41
Indexation
• L’indexation sert principalement à deux choses : soit extraire des éléments d’un
objet avec la construction x[i], ou les remplacer avec la construction x[i] <- y.
• De même, les opérations d’extraction et de remplacement d’un élément d’une
liste sont de la forme x$etiquette et x$etiquette <- y
• Il existe plusieurs façons d’indicer un vecteur dans le langage R.

42
Indexation
1. Avec un vecteur d’entiers positifs. Les éléments se trouvant aux positions
correspondant aux entiers sont extraits du vecteur, dans l’ordre. C’est la technique la
plus courante : > x <- c(A = 2, B = 4, C = -1, D = -5, E = 8)
> x[c(1, 3)]
A C
2 -1
2. Avec un vecteur d’entiers négatifs. Les éléments se trouvant aux positions
correspondant aux entiers négatifs sont alors éliminés du vecteur : >x[c(-2, -3)]
ADE
2 -5 8
3. Avec un vecteur booléen. Le vecteur d’indiçage doit alors être de la même longueur
que le vecteur indicé. Les éléments correspondant à une valeur TRUE sont extraits
du vecteur, alors que ceux correspondant à FALSE sont éliminés :
>x>0
ABCDE
TRUE TRUE FALSE FALSE TRUE
> x[x > 0]
ABE
248 43
Indexation
4. Avec un vecteur de chaînes de caractères. Utile pour extraire les éléments d’un
vecteur à condition que ceux-ci soient nommés :
> x[c("B", "D")]
B D
4 -5

5. L’indice est laissé vide. Tous les éléments du vecteur sont alors sélectionnés :
> x[ ]
ABCDE
2 4 -1 -5 8

• Cette méthode est essentiellement utilisée avec les matrices et tableaux pour sélectionner
tous les éléments d’une dimension.

44
Exercices
• Créer 2 vecteurs nom et age contenant respectivement les noms et âges de 5 étudiants
• Afficher le nom du troisième étudiant
• Afficher les âges des 2ième ,3ième et 4ième étudiants
• Afficher les noms des 1er et 4ième étudiants
• Afficher les noms de tous les étudiants sauf le 3ième

• Créer un vecteur prenom contenant les prénoms des 5 étudiants


• Nommer les éléments des deux vecteurs par les prénoms des étudiants
• Afficher le nom du troisième étudiant en indiçant par son prénom
• Afficher les ages des 2ième ,3ième et 4ième étudiants en indiçant par leurs prénoms
• Afficher les noms des 1er et 4ième étudiants en indiçant par leurs prénoms

• Créer un vecteur booléen avec la condition age>23


• Afficher les noms des étudiants âgés de plus de 23 ans en utilisant le vecteur booléen
précédent
45
Opérateurs arithmétiques
• L’unité de base en R est le vecteur.
• Les opérations sur les vecteurs sont effectuées élément par élément :
> c(1, 2, 3) + c(4, 5, 6)
[1] 5 7 9
> 1:3 * 4:6
[1] 4 10 18

• Si les vecteurs impliqués dans une expression arithmétique ne sont pas de la


même longueur, les plus courts sont recyclés de façon à correspondre au plus
long vecteur.
• Cette règle est particulièrement apparente avec les vecteurs de longueur 1 :
> 1:10 + 2
[1] 3 4 5 6 7 8 9 10 11 12
> 1:10 + rep(2, 10)
[1] 3 4 5 6 7 8 9 10 11 12
46
Opérateurs arithmétiques
• Si la longueur du plus long vecteur est un multiple de celle du ou des autres
vecteurs, ces derniers sont recyclés un nombre entier de fois :
> 1:10 + 1:5 + c(2, 4) # vecteurs recyclés 2 et 5 fois
[1] 4 8 8 12 12 11 11 15 15 19
> 1:10 + rep(1:5, 2) + rep(c(2, 4), 5) # équivalent
[1] 4 8 8 12 12 11 11 15 15 19

• Sinon, le plus court vecteur est recyclé un nombre fractionnaire de fois, mais
comme ce résultat est rarement souhaité et provient généralement d’une erreur
de programmation, un avertissement est affiché :
> 1:10 + c(2, 4, 6)
[1] 3 6 9 6 9 12 9 12 15 12
Message d'avis :
In 1:10 + c(2, 4, 6) :
la taille d'un objet plus long n'est pas un multiple de la
taille d'un objet plus court
47
Opérateurs

48
Exercices
• Dans la suite de l’exercice précédent afficher les nom des étudiants agés au moins
de 23 ans.
• Calculer le produit de deux matrices M1 et M2
• Calculer le produit matriciel de deux matrices M3 et M4
• Calculer la somme des matrices M5 et M6 de mêmes formats
• Créer deux vecteurs booléens et afficher le résultat de la conjonction puis de la
disjonction de ces vecteurs

49
Les fonctions

50
Appels de fonctions
• Il n’y a pas de limite pratique quant au nombre d’arguments que peut avoir une
fonction.
• Les arguments d’une fonction peuvent être spécifiés selon l’ordre établi dans la
définition de la fonction.
• Cependant, il est beaucoup plus prudent et fortement recommandé de spécifier les
arguments par leur nom, avec une construction de la forme nom = valeur, surtout après
les deux ou trois premiers arguments.
• L’ordre des arguments est important ; il est donc nécessaire de les nommer s’ils
ne sont pas appelés dans l’ordre.
• Certains arguments ont une valeur par défaut qui sera utilisée si l’argument n’est
pas spécifié dans l’appel de la fonction.

51
Exemple
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
• La fonction compte cinq arguments : data, nrow, ncol, byrow et dimnames.
• Ici, chaque argument a une valeur par défaut (ce n’est pas toujours le cas).
• Ainsi, un appel à matrix sans argument résulte en une matrice 1 × 1 remplie par
colonne (sans importance, ici) de l’objet NA et dont les dimensions sont
dépourvues d’étiquettes
> matrix()
[,1]
[1,] NA

52
Appels de fonctions
• Appel plus élaboré utilisant tous les arguments. Le premier argument est
rarement nommé :
> matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE, dimnames = list( c("Gauche", "Droit"),
+ c("Rouge", "Vert", "Bleu") ))

Rouge Vert Bleu


Gauche 1 2 3
Droit 4 5 6

53
Fonctions de manipulation de vecteurs
• seq : génération de suites de nombres
> seq(1, 9, by = 2)
[1] 1 3 5 7 9
• seq_len : version plus rapide de seq pour générer la suite des nombres de 1 à la valeur
de l’argument
> seq_len(10)
[1] 1 2 3 4 5 6 7 8 9 10
• rep: répétition de valeurs ou de vecteurs
> rep(2, 10)
[1] 2 2 2 2 2 2 2 2 2 2
• sort: tri en ordre croissant ou décroissant
> sort(c(4, -1, 2, 6))
[1] -1 2 4 6
• rank: rang des éléments d’un vecteur dans l’ordre croissant ou décroissant
> rank(c(4, -1, 2, 6))
[1] 3 1 2 4
54
Fonctions de manipulation de vecteurs
• rev : renverser un vecteur
> rev(1:10)
[1] 10 9 8 7 6 5 4 3 2 1
• head : extraction des 𝑛 premiers éléments d’un vecteur (𝑛 > 0) ou suppression
des 𝑛 derniers (𝑛 < 0)
> head(1:10, 3); head(1:10, -3)
[1] 1 2 3
[1] 1 2 3 4 5 6 7
• tail : extraction des 𝑛 derniers éléments d’un vecteur (𝑛 > 0) ou suppression des
𝑛 premiers (𝑛 < 0)
> tail(1:10, 3); tail(1:10, -3)
[1] 8 9 10
[1] 4 5 6 7 8 9 10
• unique : extraction des éléments différents d’un vecteur
> unique(c(2, 4, 2, 5, 9, 5, 0))
[1] 2 4 5 9 0 55
Recherche d’éléments dans un vecteur
Soit le vecteur x suivant :
>x
[1] 4 -1 2 -3 6
• which : positions des valeurs TRUE dans un vecteur booléen
> which(x < 0)
[1] 2 4
• [Link] : position du minimum dans un vecteur
> [Link](x)
[1] 4
• [Link] : position du maximum dans un vecteur
> [Link](x)
[1] 5
• match : position de la première occurrence d’un élément dans un vecteur
> match(2, x)
[1] 3
56
Arrondi
Soit le vecteur x suivant :
>x
[1] -3.6800000 -0.6666667 3.1415927 0.3333333
[5] 2.5200000
• round : arrondi à un nombre défini de décimales (par défaut 0)
> round(x)
[1] -4 -1 3 0 3
> round(x, 3)
[1] -3.680 -0.667 3.142 0.333 2.520
• floor : plus grand entier inférieur ou égal à l’argument
> floor(x)
[1] -4 -1 3 0 2
• ceiling: plus petit entier supérieur ou égal à l’argument
> ceiling(x)
[1] -3 0 4 1 3
• trunc: troncature vers zéro ; différent de floor pour les nombres négatifs
> trunc(x)
[1] -3 0 3 0 2
57
Sommaires et statistiques descriptives
Soit le vecteur x suivant :
>x
[1] 14 17 7 9 3 4 25 21 24 11
• sum, prod : somme et produit des éléments d’un vecteur
> sum(x); prod(x)
[1] 135
[1] 24938020800
• diff : différences entre les éléments d’un vecteur
> diff(x)
[1] 3 -10 2 -6 1 21 -4 3 -13
• mean : moyenne arithmétique (et moyenne tronquée avec l’argument trim)
> mean(x)
[1] 13.5
• var, sd : variance et écart type
> var(x)
[1] 64.5
58
Sommaires et statistiques descriptives
• min, max : minimum et maximum d’un vecteur
> min(x); max(x)
[1] 3
[1] 25
• range : vecteur contenant le minimum et le maximum d’un vecteur
> range(x)
[1] 3 25
• median : médiane empirique
> median(x)
[1] 12.5
• quantile : quantiles empiriques
> quantile(x)
0% 25% 50% 75% 100%
3.0 7.5 12.5 20.0 25.0
• summary : statistiques descriptives d’un échantillon
> summary(x)
Min. 1st Qu. Median Mean 3rdQu. Max.
3.0 7.5 12.5 13.5 20.0 25.0
59
Sommaires cumulatifs et comparaisons élément par élément
• Soit le vecteur x suivant :
>x
[1] 14 17 7 9 3

• cumsum, cumprod : somme et produit cumulatif d’un vecteur


> cumsum(x); cumprod(x)
[1] 14 31 38 47 50
[1] 14 238 1666 14994 44982
• cummin, cummax : minimum et maximum cumulatif
> cummin(x); cummax(x)
[1] 14 14 7 7 3
[1] 14 17 17 17 17
• pmin, pmax : minimum et maximum élément par élément (en parallèle) entre deux
vecteurs ou plus
> pmin(x, 12)
[1] 12 12 7 9 3
> pmax(x, c(16, 23, 4, 12, 3))
[1] 16 23 7 12 3
60
Opérations sur les matrices
• Soit la matrice x suivante :
>x
[,1] [,2]
[1,] 2 4
[2,] 1 3
• nrow, ncol : nombre de lignes et de colonnes d’une matrice
> nrow(x); ncol(x)
[1] 2
[1] 2
• rowSums, colSums : sommes par ligne et par colonne, respectivement, des éléments d’une matrice
> rowSums(x)
[1] 6 4
• rowMeans, colMeans : moyennes par ligne et par colonne, respectivement, des éléments d’une
matrice
> colMeans(x)
[1] 1.5 3.5
• t: transposée
> t(x)
[,1] [,2]
[1,] 2 1
[2,] 4 3
61
Exercices
1. Exemples d’utilisation de fonctions

62
Commentaires
• Un commentaire est une ligne ou une portion de ligne qui sera ignorée par R.
• Ceci signifie qu’on peut y écrire ce qu’on veut, et qu’on va les utiliser pour ajouter
tout un tas de commentaires à notre code permettant de décrire les différentes
étapes du travail, les choses à se rappeler, les questions en suspens, etc.

• Un commentaire sous R commence par un ou plusieurs symboles #.


• Tout ce qui suit ce symbole jusqu’à la fin de la ligne est considéré comme un commentaire.
On peut créer une ligne entière de commentaire, par exemple en la faisant débuter par ## :
## Attention au nombre de non réponses !
• On peut aussi créer des commentaires pour une ligne en cours :
x <- 2 # On met 2 dans x, parce qu'il le vaut bien

63

Vous aimerez peut-être aussi