Manipulation des objets sur R
Exercice 1
Soit a=c(“lannister”, “targaryen”, “baratheon”, “starck”, “greyjoy”)
- Quelle est la longueur du vecteur ? indice : length
- Essayez de faire a[1:3]. Qu’obtenez-vous ?
- Créez un nouveau vecteur b ne contenant que lannister et starck.
- Essayez de faire a[-1]. Qu’obtenez-vous ?
- Triez par ordre alphabetique. indice : sort ?
a=c("lannister", "targaryen", "baratheon", "starck", "greyjoy")
length(a)
a[1:3]
b = a[c(1,4)]
a [-1]
sort(a)
Exercice 2
- Créez un vecteur a contenant tous les entiers de 1 à 100. Indice: “:”.
- Ajoutez les valeurs 200, 201, 202 au vecteur a. Indice : c().
- Créez un vecteur b contenant tous les entiers pairs de 2 à 100. Indice: seq.
\(\mathrm{a}=\mathrm{c}(1: 100)\) c (a, 200, 201, 202) \(b=\operatorname{seq}(\) from \(=2\), to \(=100\), by \(=2\) )
Exercice 3
- Créer le vecteur vec1 contenant tous les multiples de 2 compris entre 1 et 50 .
- Créer le vecteur vec 2 contenant 3 fois chacun des 10 chiffres (soit \(0,0,0 ; 1,1,1 ; 2,2,2 ; 3,3,3\); etc.). Indice: \(r e p()\)
- Créer le vecteur vec3 contenant une fois le chiffre 1, deux fois le chiffre 2 , trois fois le chiffre \(3 \ldots\) et 20 fois le chiffre 20. Quelle est la longueur de cette suite? Indice: length()
Pensez à bien regarder l’aide des fonctions. Par exemple, pour la fonction rep regardez bien la différence entre les paramètres each et times ; vous pouvez copier-coller les lignes d’exemple pour bien comprendre chaque paramètre.
#1
vec1 = seq(from=2, to=50, by=2 )
#2
vec2 = rep(c(0:9), each=3)
#3
vec3 = rep(1:20, times = c(1:20))
length(vec3)
Exercice 4
La commande paste permet de concataner du texte. Essayez paste(“chr”, 1, sep=““). Créez, en une seule ligne de commande, le vecteur vec4 contenant les noms suivants : chr1, chr2,… , chr22, chrX, chrY. Indice : paste()
paste("chr", 1, sep="")
vec4 = paste("chr", c(1:22,"X","Y"), sep="")
Exercice 5 : Facteurs
- Définissez un facteur fac = factor (c(“a”, “b”, “b”, “b”, “a”, “b”, “a”, “a”)).
- Calculez le nombre de “a” et de “b” dans fac en utilisant les fonctions which et length et des opérateurs binaires (==).
- Que permet de faire la fonction table? Appliquez la à fac. Retenez bien la fonction table très très utile!
fac = factor(c("a","b","b","b","a","b","a","a"))
length(which(fac == "a"))
length(which(fac == "b"))
table(fac)
Exercice 6 : Matrices
- Exécutez la commande \(a=\operatorname{rep}(c(0,1), 50)\). Qu’a-t-on fait?
- Utilisez a pour construire une matrice A à 10 lignes et 10 colonnes. indice : matrix ().
- Affichez les dimensions de cette matrice. Indices : dim, ncol, nrow
- Utilisez la fonction \(t\) sur cette matrice pour créer une matrice B. Que s’est-il passé ?
5 . Les commandes \(\mathrm{A}[1: 5\), ] et \(\mathrm{B}[, 1: 5]\) permettent de récuperer respectivement les 5 premières lignes de A et les 5 premières colonnes de B. Inspirez-vous de ces commandes pour récupérez dans A les lignes ne contenant que des 1 et dans \(B\) les colonnes ne contenant que des 0 .
#1
a = rep(c(0,1), 50)
#2
A = matrix(a, ncol = 10, nrow = 10)
#3
dim(A)
ncol(A)
nrow(A)
#4
B = t(A)
#5
line1 = A[seq(2,10,2),]
col0 = B[,seq(1,10,2)]
Exercice 7 : Liste et tableaux de données (data.frame)
- Créez une liste x contenant:
- une variable aléatoire gaussienne de taille 10 appelée a
- un vecteur contenant uniquement des 1 de taille 10 également, appelé b. On peut accéder aux deux éléments de cette liste avec les commandes \(\mathrm{x}[\mathrm{i}]\) ] ou x$nom_de_la_variable. Indices : list, rnorm.
- Créez un objet y qui est la transformation de cette liste en data.frame. On peut maintenant parcourir les éléments de chaque objet comme pour une matrice avec la commande y \([i, j]!\) indice \(=\) as. data.frame
- Créez deux objets z1 et z2 contenant respectivement les 3 premières et les 3 dernières lignes de y. Quelle est la classe de ces deux objets ?
- Rajoutez à la liste x un vecteur chiffre contenant les entiers de 1 à 26 .
- Essayez de transformer de nouveau \(x\) en data.frame. Que se passe-t-il?
#1
x = list(
a = rnorm(10),
b = rep(1, 10)
)
x[["a"]]
x$a
#2
y = as.data.frame(x)
#3
z1 = y[c(1:3) ,]
z2 = y[c(8:10),]
class(z1)
class(z2)
#4
x$chiffre = 1:26
#5
as.data.frame(x)
Exercice 8 : Student’s Sleep Data
- Executez la commande data(sleep). Nous venons de charger en mémoire l’un des nombreux jeux de données distribués avec R ! Profitez de l’aide sur ce jeu de données pour en apprendre un peu plus (?sleep)! Tous les jeux de données disponibles avec l’installation de base de R sont accessibles en tapant data().
- Quel est le type de l’objet sleep ?
- Quelle fonction vous permet d’obtenir rapidement le nombre d’individus par groupe? Executez la.
- Combien y-a-t-il de valeurs négatives dans le groupe 1 ? Indice : which()
- Soit s un vecteur représentant le sexe des individus: s = rep(c(“f”,“m”,“m”,“f”,“m”,“f”,“m”,“m”,“f”,“m”),2). Combinez l’objet sleep et le vecteur s dans une nouvelle matrice sleep2. Indice : cbind()
- Quelles sont les noms des colonnes de la matrice sleep2? Renommez la dernière colonne en ‘sex’. Indice: colnames ()
- Combien \(y\)-a-t-il de femmes et d’hommes dans chacun des groupes ?
#1
data(sleep)
#2
typeof(sleep); class(sleep)
#3
table(sleep$group)
#4
length(which(sleep$extra < 0))
#5
s = rep(c("f","m","m","f","m","f","m","m","f","m"),2)
sleep2 = cbind(sleep, s)
#6
colnames(sleep2)
colnames(sleep2)[4] = "sex"
#7
table(sleep2$s, sleep2$group)