Partie 1 : Création et manipulation de vecteurs et matrices.

#Creation de vecteur et de matrices #Les commentaires apparaissent après le symbole # #La compilation se fait de plusieurs manières: - Soit avec la petite flêche verte au sein de la cellule (Run current chunk qui signifie, complilation de la cellule) -Soit aen haut à droite avec l’icone Run, vous pouvez sélectionner par exemple Run Current Chunk # La fonction c() pour créer un vecteur de valeurs séparées par des virgules comme l’exemple suivant #Attention c’est avec un petit c

##Création d’un vecteur à  la main
y=c(1,2,3,4)

##Pour afficher vos valeurs faite appel à y et complier avec la flêche en vert à droite

#pour afficher
y 
## [1] 1 2 3 4

Si un message d’erreur appariat du style Error: object ‘y’ not found, cela signifie que vous avez oublié de compiler le code

#On peut aussi créer un vecteur de caractères
a <- c("A","B","C")
a #pour afficher
## [1] "A" "B" "C"

Création d’un vecteur en utilisant des séquences ou des répétitions avec les fonctions rep et seq

# rep(a,n) : replique la valeur de a au total n fois
x1 <- rep(1,4) 
x1
## [1] 1 1 1 1
# seq(a,b,h) : affiche une suite de valeur allant de a à b de pas h
y1<-seq(1,2,0.25)
y1 # seq : sequence de pas donné
## [1] 1.00 1.25 1.50 1.75 2.00

La fonction seq peut aussi s’écrire de la manière suivante

#seq(a,b,length=l) crée un vecteur allant de a à b de longueur l
y2 = seq(1,2,length=20) # il faut lui specifier la longueur avec length
y2 # sequence de longueur donné
##  [1] 1.000000 1.052632 1.105263 1.157895 1.210526 1.263158 1.315789 1.368421
##  [9] 1.421053 1.473684 1.526316 1.578947 1.631579 1.684211 1.736842 1.789474
## [17] 1.842105 1.894737 1.947368 2.000000

#Vecteurs booleans #Les opérations logiques définies via <, <=, >, >=, == (test d’égalité), ! = (différent) renvoient TRUE ou FALSE ;

x=1:8 #une autre manière de créer une suite de valeurs consecutives de 1 à 3.
y=seq(1,5,0.5) # rappel vecteur allant de 0 à 2 de pas 0.5
#Si vous voulez affichez "y" il faut le saisir et compilé de nouveau

#Pour connaitre la longueur d’un vecteur

length(y) #affiche la longueur du vecteur y
## [1] 9
length(x)
## [1] 8

#Pour tester les valeurs de x qui sont supérieur ou égale à y

x>=y
## Warning in x >= y: longer object length is not a multiple of shorter object
## length
## [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
#le résultat est une suite de TRUE (Vrai) ET FASLE (Fauc)

#Accéder aux composantes d’un vecteur : utilisation de [ ]

## Créer les vecteurs suivants
y=c(6,9,10)
a=c("A","B","C")
y[1]# Pour afficher la première valeur de y
## [1] 6
a[2] # Pour afficher la première valeur de y
## [1] "B"
y[c(1,3)] # Pour afficher à la fois la première et troisième valeur de y
## [1]  6 10
y[-1] # Pour afficher toutes les valeurs sauf la première valeur
## [1]  9 10
y[y>8] # Afficher les valeurs de y qui sont supérieurs à 8
## [1]  9 10
y[y==9] # Afficher les valeurs qui sont égales à 9
## [1] 9
#Attention le test d'égalité se fait avec deux fois le symbole =
a[c(TRUE,TRUE,FALSE)] # Affihe le premier et le second caractère
## [1] "A" "B"

##Création de matrices #Methode 1 : par “collage” de vecteurs lignes ou colonnes

#Creation des vecteur
A<-1:4 #idem A<- c(1,2,3,4)
B<- seq(5,8) #idem B=c(5,6,7,8)
C<- c(9,10,11,12)
length(A)
## [1] 4
length(B)
## [1] 4

collage des colonnes col

M1 <-cbind(A,B,C)
M1
##      A B  C
## [1,] 1 5  9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12

# collage des lignes (row)

M2 <-rbind(A,B,C)
M2
##   [,1] [,2] [,3] [,4]
## A    1    2    3    4
## B    5    6    7    8
## C    9   10   11   12

#Pour connaitre la dimension d’une matrice

dim(M1) #Affiche le nombre de lignes et de colonnes
## [1] 4 3

#Remarque : Les fonctions cbind() et rbind() permettent de fusionner des vecteurs, des matrices, des tableaux individus-variables (appelés dataframe, un objet R qu’on manipulera à la prochaine séance)

Creation de matrices avec la fonction matrix

 #remplissage par colonnes
M1 <-matrix(1:12,nrow=3)
M1
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
# rajouter byrow=TRUE pour remplissage par ligne
M2 <-matrix(1:12,nrow=3,byrow=T)
M2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
##Attention : Si la dimension du vecteur utilisé pour la construction de la matrice n’est pas égale à ncol × nrow, alors ce sera une construction par complétion tant que nécessaire !

#Extraire d’une matrice une sous-matrice particulière

M1[2,] # extraire toute la ligne 2
## [1]  2  5  8 11
 #extraire les colonnes 2 et 3
M1[,c(2,3)]
##      [,1] [,2]
## [1,]    4    7
## [2,]    5    8
## [3,]    6    9

Appliquer une fonction sur toutes lignes ou colonnes d’une matrice

apply(M1,1,sum) # somme (sur colonnes) à lignes fixées
## [1] 22 26 30
apply(M1,2,sum) # somme (sur lignes) à colonnes fixées
## [1]  6 15 24 33
# min à colonnes fixées
apply(M1,2,min) 
## [1]  1  4  7 10

#Tri d’un vecteur avec sort() ; order()

x<-c(2,4,6,5,3,1) #creation d'un vecteur
sort(x) # retourne le vecteur ordonné
## [1] 1 2 3 4 5 6
order(x) # retourne le rang des composantes ordonnees de x
## [1] 6 1 5 2 4 3

#Opérations sur les vecteurs ou matrices

x<-c(1,1)
y<-c(2,3)

x+y #la somme des vecteurs
## [1] 3 4
x*y #le produit des vecteur
## [1] 2 3
3*M1 #le produit de la matrice précédemment nommée M1 avec la valeur 3
##      [,1] [,2] [,3] [,4]
## [1,]    3   12   21   30
## [2,]    6   15   24   33
## [3,]    9   18   27   36
#M1%*%M2 # Le produit matriciel se fait avec l'operation %*%
#valeurs propres si matrice carrée
M=matrix(c(1,0,0,0,1,0,0,0,1),nrow=3,ncol=3)
eigen(M) # Retourne les valeurs et vecteurs propres de M
## eigen() decomposition
## $values
## [1] 1 1 1
## 
## $vectors
##      [,1] [,2] [,3]
## [1,]    0    0    1
## [2,]    0    1    0
## [3,]    1    0    0
solve(M) # inverse s'il existe, ici déterminant proche de 0 donc problème
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1
t(M1) # transposee de M1
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
## [4,]   10   11   12
det(M)# Determinant de M
## [1] 1
A=M^2 #matrixe au carré
B=c(0,0,0)
solve(A,B) # solution de Ax=B
## [1] 0 0 0

##Opérateurs logiques ; fonction which pour rechercher les positions (indices) des éléments

▶ La fonction which() permet de récupérer les indices descomposantes vérifiant une propriété donnée ; ▶ Les fonctions which.min() ou which.max() renvoient l’indice de la composante min ou max du vecteur

#Creation de vecteurs
x=c(1,2,4)
y=c(1,3,2)
which(y==3)#renvoie l'indice ou la position de la valeur égale à 3
## [1] 2
which(y>1) # renvoie les indices des valeurs plus grand que 1
## [1] 2 3

Extraction sous condition

y[y>2] # extraction des valeurs de y plus grands que 2
## [1] 3
x[x==1] #extraction des valeurs de x égales à 1
## [1] 1

▶ Exercice TP