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