Vous êtes sur la page 1sur 6

Master MIAGE S9

Pr Aicha MAJDA
FSJES Meknes
2023-2024

Travaux Dirigés 1
Les bases du langage R
1. Le calcul de base

Donner le résultat de ces expressions sans programmer :


2 + 3 * 5 / 7
(2 + 3 * 5) / 7

2. Les noms des objets

Quels sont les noms valides et invalides parmi ceux-ci :


foo <- 5
foo.123 <- 5
foo_123 <- 5
123foo <- 5
.foo <- 5
.123foo <- 5

3. Le mode d’un objet

Donner le mode de chacun des objets suivants :


c(1, 4.1, pi)
c(2, 1 + 5i)
c(TRUE,T, FALSE, TRUE,T)
c("foobar")
c(5, TRUE, FALSE)
c(5, "z")
c(5, TRUE, "z")

seq
seq(1 :100)
list(5, "foo", TRUE)

4. La longueur d’un objet

Calculer la longueur de x pour chacun des objets suivants :


x <- 1:4
x <- "foobar"
x <- c("f", "o", "o", "b", "a", "r"))

5. Les valeurs spéciales

a. Quel est le résultat x que produit l’instruction suivante :


x <- c(NULL, NULL)
x <- c(6, NA, 4, 10)
sum(x)
sum(x, na.rm = TRUE)
is.na(x)

1
b. Exécuter le script suivant pour en déduire les valeurs en R de
chacune des expressions :
1/0
-1/0
0/0
x <- c(65, Inf, NaN, 88) ;is.finite(x); is.nan(x)

6. Les attributs

a. Quel est l’effet de l’attribut dim sur l’objet x définit par :


x <- 1:24
dim(x)
x
dim(x) <- c(4, 6)
x
dim(x) <- c(4, 2, 3)
x

b. Quel est l’effet de l’attribut dimnames sur l’objet x définit par :


dimnames(x) <- list(c("l1","l2","l3","l4"), c("c1", "c2"), c("M1", "M2",
"M3"))
dimnames(x)
x

c. La fonction attributes() permet de récupérer les attributs de


l’objet, Quel est le résultat de l’exécutions de ces instructions :
attributes(x)
attributes(x) <- NULL
x

7. Les vecteurs

On peut assigner des étiquettes aux éléments d’un vecteurs ou liste en


utilisant la fonction names.

a. Définir le résultat des instructions suivantes :


vec <- c(10,30,50,70,90)
vec
names(vec) <- c('a','b','c','d','e')
vec
vec[1]
vec["c"]
vec[-2]
names(vec) <- NULL
vec

li <- list('Spark','R','Java','Python')
names(li) <- c('AA','AB','AC','AD')
names(li)

b. La fonction 'vector' sert à initialiser des vecteurs avec des valeurs


initiales. Elle compte deux arguments : le mode du vecteur et sa
longueur. Quels sont les valeurs des éléments de vec après chaque
instruction :
vec=vector("numeric", 5)
vec=numeric(5)

2
vec=logical(5)
vec=complex(5)
vec=character(5)

8. Les matrices

Une matrice est un vecteur avec un attribut 'dim' de longueur 2 une classe
implicite "matrix".On a
mat1 <- matrix(1:12, nrow = 3, ncol = 4)

a. Donner des instructions suivantes sans exécuter le script :

length(mat1)
dim(mat1)
class(mat1)

b. Quelle est la différence entre la matrice mat1 et la matrice mat2


définit par un vecteur auquel nous avons ajouté l’attribut dim :

mat2 <- 1:12


dim(mat2) <- c(3, 4)
mat2
class(mat2)

c. Quel est le rôle de l’argument byrow dans l’instruction suivante :

x=matrix(1:12, nrow = 3, byrow = TRUE)

d. Donner le résultat des affichages suivants :

x[1, 3]
x[7]
x[1, ]
x[, 2]
nrow(x)
dim(x)[1]
ncol(x)
dim(x)[2]

La fusion de deux matrices se fait en utilisant la liaison de lignes rbind


ou de colonnes cbind.
Rq : Dans rbind le nombre de colonnes des deux matrices doit être le même
et dans cbind le nombre de lignes des deux matrices doit être le même.

e. Exécuter le script suivant et en déduire les fusions possibles et


impossibles :

x <- matrix(1:12, 3, 4)
y <- matrix(1:8, 2, 4)
z <- matrix(1:6, 3, 2)
rbind(x, 1:4)
rbind(x, y)
cbind(x, 1:3)
cbind(x, z)
rbind(x, z)
cbind(x, y)

3
9. Les tableaux

Un tableau (array) est un vecteur avec un attribut 'dim' de longueur


supérieure à 2 et une classe implicite "array".

a. Donner le résultat affiché par le script suivant :

x <- array(1:60, 3:5); x


length(x)
dim(x)
class(x)
x[1, 3, 2]
x[19]

b. Le tableau x peut être vu comme un prisme rectangulaire 3 unités de


haut, 4 de large et 5 de profond. Quel est le résultat de ce script :

x[, , 1]
x[, 1, ]
x[1, , ]
x[, 1, 1]
x[1, 1, ]
x[1, , 1]

10. Les listes

La liste est l'objet le plus général en R. C'est un objet qui peut contenir
des objets de n'importe quel mode et longueur.

a. Donner le résultat du script suivant :

x <- list(joueur = c("V", "C", "C", "M", "A"),


score = c(10, 12, 11, 8, 15),
expert = c(FALSE, TRUE, FALSE, TRUE, TRUE),
niveau = 2)
is.vector(x)
length(x)
mode(x)
y <- list(TRUE, 1:5)
length(y)
z <- c(x, y)
length(z)

Pour extraire un élément d'une liste, il faut utiliser les doubles crochets
[[ ]]. Les simples crochets [ ] retournent une sous-liste.

b. Exécuter le script suivant :

x[[1]]
mode(x[[1]])
length(x[[1]])
x[1]
mode(x[1])
length(x[1])
x[[2]][1]
x[[c(2, 1)]]

4
Les éléments d'une liste étant généralement nommés, il est souvent plus
simple et sûr d'extraire les éléments d'une liste par leur étiquette et non
par indiçage.

c. Prouver l’équivalence indiquée dans les commentaires.

x$joueur # équivalent à x[[1]]


x$score[1] # équivalent à x[[c(2, 1)]]
x$niveau <- 1 # équivalent à x[[4]]<-1

d. Supprimer le 4ème élément de la liste x en utilisant la valeur


spéciale NULL

e. La fonction unlist permet de convertir une liste en un simple


vecteur. Exécuter le code suivant et en déduire son effet sur les
données.

unlist(x)
unlist(x, use.names = FALSE)

11. Les data frames

Un data frame est une liste de vecteurs dont les éléments sont tous de même
longueur. Il comporte un attribut dim, ce qui fait qu'il est représenté
comme une matrice. Cependant, les colonnes peuvent être de modes
différents.
On considère le data frame suivant :
DF <- data.frame(Noms = c("Pierre", "Jean", "Jacques"),
Age = c(42, 34, 19),
Fumeur = c(TRUE, TRUE, FALSE))

a. Donner le résultat des instructions suivantes :

mode(DF)
class(DF)
dim(DF)
names(DF)
row.names(DF)
DF[1, ]
DF[, 1]
DF$Noms

b. Quelle instruction à exécuter pour avoir le contenu de DF comme


suit :

5
12. Exercice

Soit un vecteur formé de vingt nombres aléatoires entre 1 et 100. Ce


vecteur peut être généré par la fonction sample :
x <- sample(1:100, 20)

a. En utilisant la fonction names, ajouter des étiquettes aux éléments


du vecteur à partir du vecteur de lettres prédéfini : 'letters'.

b. Générer un vecteur y de 5 nombres aléatoires entre 1 et 20

c. Remplacer les éléments de x de positions égales aux éléments de y par


la valeur NA (donnée manquante)

d. Afficher le contenu du vecteur x

e. Afficher le résultat de is.na(x).

En R, lorsqu’on indice un vecteur par un vecteur logique, il renvoie les


éléments du vecteur où l’indice est TRUE, càd x[is.na(x)] retourne les
éléments ayant la valeur NA

f. Afficher le résultat de is.na(x), quel est sa nature

g. Remplacer toutes les données manquantes par 0.

h. Réafficher x pour s’assurer du remplacement.

Vous aimerez peut-être aussi