• Aucun résultat trouvé

V- 1 Les matrices (matrix)

N/A
N/A
Protected

Academic year: 2022

Partager "V- 1 Les matrices (matrix)"

Copied!
23
0
0

Texte intégral

(1)

Cours 2

V- Les matrices VI- Les listes VI- Les listes

VII- Les tableaux de données

VIII- Compléments

(2)

V- 1 Les matrices (matrix)

Ce sont des vecteurs qui possèdent un argument supplémentaire: la dimension (accessible avec dim()). La dimension est un vecteur de longueur 2 définissant le nombre de lignes et de colonnes de la matrice.

Les valeurs d’une matrice sont toutes de même mode (numérique, caractère, logique).

>M=matrix(1:10,2,5);M

~

M=1:10;dim(M)=c(2,5);M [,1] [,2] [,3] [,4] [,5]

[1,] 1 3 5 7 9 [2,] 2 4 6 8 10

> dim(M) [1] 2 5

(3)

V-2 Génération de matrices

Par la fonction matrix()

matrix(data=, nrow= , ncol=, byrow=, dimnames=)

data:

un vecteur (1° argument par défaut)

nrow:

nombre de lignes (2° argument par défaut)

ncol:

nombre de colonnes (3° argument par défaut)

ncol:

nombre de colonnes (3° argument par défaut)

byrow:

remplissage par ligne si T, colonne si F (F par défaut)

dimnames:

liste de deux vecteurs, nom des lignes et nom des colonnes respectivement (NULL par défaut).

(4)

V-2 Génération de matrices

> M=matrix(1:10,2,5); N=matrix(1:10,2,5,byrow=T); M;N;

[,1] [,2] [,3] [,4] [,5]

[1,] 1 3 5 7 9 [2,] 2 4 6 8 10

[,1] [,2] [,3] [,4] [,5]

[,1] [,2] [,3] [,4] [,5]

[1,] 1 2 3 4 5 [2,] 6 7 8 9 10

>R=matrix(1:10,2,5,dimnames=list(1:2,letters[1:5]));R;

a b c d e 1 1 3 5 7 9 2 2 4 6 8 10

(5)

V-2 Génération de matrices

Par l’attribution de valeurs à l’attribut « dim » d’un vecteur

>M=1:10; dim(M)=c(2,5);M [,1] [,2] [,3] [,4] [,5]

[1,] 1 3 5 7 9 [2,] 2 4 6 8 10

® Une matrice de longueur < à nrow*ncol est recyclée par R si besoin:

> P=matrix(1:5,2,5); P;

[,1] [,2] [,3] [,4] [,5]

[1,] 1 3 5 2 4 [2,] 2 4 1 3 5

> Q=matrix(1:3,2,5)

Warning message:

data length [3] is not a sub-multiple or multiple of the number of rows [2] in matrix

(6)

V-3 Sélection d’éléments d’une matrice

(Dé-)Sélection par indice de position des éléments (i,j)

Ligne ou colonne entière: >M=matrix(1:15,3,5);M [,1] [,2] [,3] [,4] [,5]

[1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15

>M[1,];M[,3];

[1] 1 4 7 10 13 [1] 7 8 9

Plusieurs lignes ou colonnes : >M[c(1,3),]; >M[,-c(2,4)]

[,1] [,2] [,3] [,4] [,5] [,1] [,2] [,3]

[1,] 1 4 7 10 13 [1,] 1 7 13

[2,] 3 6 9 12 15 [2,] 2 8 14

[3,] 3 9 15

Sous-matrices : > M[1,2]; >M[c(1,2),-3]

[1] 4 [,1] [,2] [,3] [,4]

[1,] 1 4 10 13 [2,] 2 5 11 14

(7)

V-3 Sélection d’éléments d’une matrice

(Dé-)Sélection par matrices logiques :

M [,1] [,2] [,3] [,4] [,5] >M[M[,1]>1,]

[1,] 1 4 7 10 13 [,1] [,2] [,3] [,4] [,5]

[2,] 2 5 8 11 14 [1,] 2 5 8 11 14

[3,] 3 6 9 12 15 [2,] 3 6 9 12 15

(Dé-)Sélection d’un vecteur par indice linéaire des éléments (donne des vecteurs ) :

>M[3]; > v=1:3;M[v]; >M[-3];

[1] 3 [1] 1 2 3 [1] 1 2 4 5 6 7 8 9 10 11 12 13 14 15

> M[-v]; >M[M>7]

[1] 4 5 6 7 8 9 10 11 12 13 14 15 [1] 8 9 10 11 12 13 14 15

(8)

V-4 Opérations sur les matrices

Les opérateurs habituels (+,-,*,/, =, >,<, …) fonctionnent élément par élément

Produit matriciel algébrique: %*%, Transposée : t()

Diagonalisation d’une matrice carrée: eigen() Déterminant d ’une matrice carrée : det()

Inverse d’une matrice, ou résolution d’un système d’équations linéaire : solve()

solve()

® M+v, M matrice, v vecteur de même longueur que M, est recyclé en matrice.

>M=matrix(c(1,2,1,0),2,2);v=c(1,0,2,1);

>M >v >M+v

[1,] 1 1 [1] 1 0 2 1 [,1] [,2]

[2,] 2 0 [1,] 2 3

[2,] 2 1

(9)

V-4 Opérations sur les matrices

>N=matrix(1:4,2,2); >M=matrix(c(1,2,1,0),2,2);

[,1] [,2] [,1] [,2]

[1,] 1 3 [1,] 1 1

[2,] 2 4 [2,] 2 0

>M+2; >M*N; >M%*%N

[,1] [,2] [,1] [,2] [,1] [,2]

[1,] 3 3 [1,] 1 3 [1,] 3 7

[2,] 4 2 [2,] 4 0 [2,] 2 6

>t(M)

[,1] [,2]

[1,] 1 2 [2,] 1 0

(10)

V-4 Opérations sur les matrices

D’autres fonctions matricielles utiles :

diag(): si v est un vecteur, diag(v) crée une matrice diagonale avec v sur la diagonale; si M est une matrice, diag(M) extrait la diagonale de M

>v=1:2;diag(v) >M=matrix(1:2,2,2);diag(M)

[,1] [,2] [1] 1 2

[1,] 1 0 [2,] 0 2

sum(): calcule la somme de tous les éléments de M; sum(M, na.rm=T):

somme sans tenir compte des NA >sum(M) [1] 6

rbind(), cbind():concaténation verticale ou horizontale de deux matrices > cbind(M,c(1,1)) > rbind(M,c(1,1))

[,1] [,2] [,3] [,1] [,2]

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

[2,] 2 2 1 [2,] 2 2

[3,] 1 1

(11)

V-4 Opérations sur les matrices

apply(M,margin,fun,…): applique à M la fonction fun (ou un opérateur, mais qui doit alors être mis entre guillemets); margin indique si l’action doit être appliquée sur les lignes ( margin=1), les colonnes ( margin=2), ou les deux ( margin=c(1,2))

>M=matrix(c(1,2,1,0),2,2) [,1] [,2]

[,1] [,2]

[1,] 1 1 [2,] 2 0

>apply(M,1,sum) #le résultat est un vecteur formé

[1] 2 2 # des sommes des lignes de la matrice

Fonctions is.numeric(),…

(12)

VI- 1 Les listes (list)

Une liste est une collection ordonnée d’objets (vecteurs, matrices, facteurs, data.frames, listes) en ligne, non

nécessairement de même type, mode, longueur.

>list(x=1:5,y=letters[1:5], a=c(T,F))

$x

[1] 1 2 3 4 5

$y

[1] "a" "b" "c" "d" "e"

$a

[1] TRUE FALSE

(13)

VI- 1 Génération des listes (list)

La création d’une liste se fait avec la fonction list()

li=list(nom1=, nom2=..) les noms sont facultatifs

Listes nommées :

>L=list(x=1:5,y=letters[1:8]);L

$x

[1] 1 2 3 4 5 [1] 1 2 3 4 5

$y

[1] "a" "b" "c" "d" "e" "f" "g" "h"

Listes non nommées:

>x=1:5; y=letters[1:8]; l=list(x,y);l;

#ou> l=list(1:5,letters[1:8])

[[1]]

[1] 1 2 3 4 5 [[2]]

[1] "a" "b" "c" "d" "e" "f" "g" "h"

(14)

VI-2 Sélection d’éléments dans une liste

Les objets d’une liste sont accessibles (ils ont le type de l’objet)

Par leur nom : li$nom1, li$nom2, si elle est nommée

>L$x >is.vector(L$x)

[1] 1 2 3 4 5 [1] TRUE

par leur index entre double crochet, quelle que soit la liste

>L[[1]]

≠≠≠≠

L[1], #sous liste

[1] 1 2 3 4 5 [1] 1 2 3 4 5

On ne peut sélectionner qu’un objet à la fois dans une liste

Sélection de sous-listes (type liste):

>L[1]; > L[c(1,2)]

$x $x

[1] 1 2 3 4 5 [1] 1 2 3 4 5

$y

[1] "a" "b" "c" "d" "e" "f" "g" "h"

(15)

VII- 1 Les tableaux de données (data.frame)

En interne ce sont des listes (is.list()=T), dont les champs (colonnes des objets) sont des colonnes de même longueur

En apparence ce sont des matrices dont les colonnes peuvent être de modes différents: caractère,

numérique, logique, …

x y fac 1 1 1 C 2 1 2 C 3 1 3 A 4 1 4 B 5 1 5 A

numérique, logique, …

>L= LETTERS[1:3];

>D=data.frame(x=rep(1,10),y=1:10,fac=sample(L,10,repl=T));

>D

5 1 5 A 6 1 6 A 7 1 7 B 8 1 8 A 9 1 9 B 10 1 10 B

(16)

VII-2 Sélection d’éléments dans un data.frame

On peut accéder aux lignes, colonnes et éléments par leur indice de position ou par leur nom (existe par défaut):

>D[,3] #ou >D[,”fac”] ou >D$fac [1] C C A B A A B A B B

Levels: A B C

>D[1,3] #ou >D[1, “fac”]

[1] C [1] C

Levels: A B C

Un élément d’un data.frame est un facteur

>is.factor(D[,3])

[1] TRUE x y fac 1 1 1 C

2 1 2 C 3 1 3 A

4 1 4 B ...

(17)

VII-3 Fonctions utiles pour les data.frames (et pour les matrices)

names(),colnames(): renvoie la liste des noms de colonnes ou les crée

>colnames(D); [1] "x" "y" "fac "

>colnames(D)=c(LETTERS[1:2], "fac");D

rownames() renvoie la liste des noms de lignes ou les crée :

>rownames(D)=letters[1:10];D

dimnames():renvoie une liste à 2 champs: noms des lignes/noms des colonne >dimnames(D)

A B fac salle a 1 1 B 1 b 1 2 A 2 c 1 3 B 1 d 1 4 A 2 e 1 5 C 1

….. lignes/noms des colonne >dimnames(D) [[1]]

[1] "a" "b" "c" "d" "e" "f" "g" "h" "i " " j "

[[2]]

[1] "A" "B" "fac"

dim():liste des dimensions du data.frame : > dim(D) [1] 10 3 cbind()/rbind():concaténation en colonne/ligne

>cbind(D,salle=rep(c(1,2),5))

edit(), fix() : ouvre fenêtre d’édition où entrer directement les valeurs du data.frame

…..

(18)

VII-4 Lire les data.frame de R

Lister des data.frames archivés dans R:

data() : liste tous les data.frame du package de tableaux par défaut de R nommé « datasets » (R-HOME/library/datasets) try(data(package = "cluster") ): liste les data.frame dans le

package "cluster " de R.

Charger des data.frames archivés dans R:

data(USArrests) : charge le data.frame USArrests (dans le package " datasets ");

help(USArrests) : donne des informations sur le data.frame

" USArrests "

library(cluster); data(agriculture)/data(agriculture,

package="cluster") : charge le data.frame " agriculture " du

package " cluster "

(19)

VIII- 1 Modes

type Modes possibles Plusieurs

modes

Vecteur vector Numérique,caractère,complexe logique Non

Facteur factor Numérique,caractère Non

Tableau array Numérique,caractère,complexe, logique Non

Matrice matrix Numérique,caractère,complexe, logique Non

Data.frame Numérique,caractère,complexe, logique Oui

Série temporelle ts Numérique,caractère,complexe, logique oui

Liste list Numérique, caractère, complexe logique

oui

(20)

VIII-2 Conversion, identification

• as.vector(), is.vector()

• as.factor(), is.factor()

• as.list(), is.list()

• as.matrix(), is.matrix()

• as.matrix(), is.matrix()

• as.data.frame(), is.data.frame()

(21)

VIII-3 Fonctions utiles

sum(x) Somme des éléments de x prod(x) Produit des éléments de x

max(x), min(x) Maximum, minimum des éléments de x

which.max(x) Retourne l’indice du maximum des éléments de x which.min(x) Retourne l’indice du minimum des éléments de x range(x) Idem que c(min,max)

mean(x) Moyenne des éléments de x median(x) Médiane des éléments de x

var(x) ou cov(x) Variance des éléments de x(calculée sur n-1) matrice des var et cov si x est une matrice

cor(x) Matrice de corrélation si x est une matrice ou un data frame

sd(x) Ecart-type des éléments de x

(22)

VIII-3 Fonctions

round(x,n) Arrondit les éléments de x à n

chiffres après la virgule

rev(x) Inverse l’ordre des éléments de x

sort(x) Trie les éléments de x dans l’ordre

ascendant

rank(x) Range les éléments de x

scale(x) Centre et réduit les données

scale(x) Centre et réduit les données

pmin(x,y,…) Un vecteur dont le iéme élément est

le minimum entre x[i] et y[i]

cumsum(x) Un vecteur dont le ieme élément est

la somme de x[1]à x[i]

cumprod(), cummin(),cummax() Idem pour produit, minimum, maximum

match(x,y) Retourne un vecteur de meme longueur

que x contenant les éléments de x qui sont dans y

(23)

VIII-3 Autres…

choose(n,k) Coefficient binomial Cnk

na.omit() Supprime les observations avec

données manquantes

na.fail() Retourne un message d’erreur si x

contient au moins un NA

unique() Si x est un vecteur ou un data

frame, retourne un objet similaire frame, retourne un objet similaire mais avec les éléments dupliqués supprimés

table() Retourne un tableau des effectifs

des différentes valeurs de x

subset() Retourne une selection de x en

fonction de critères

sample(x,size) Ré-échantillonnage aléatoire et sans remise de size éléments dans x

Références

Documents relatifs

En mathématiques, une suite de Syracuse est une suite d'entiers naturels définie de la manière suivante : le premier terme est un nombre entier plus grand que zéro ;

Position de la pale lorsque sa vitesse est maximum

[r]

[r]

[r]

(D) Alors toutes les trois propri´ et´ es. pr´ ec´ edentes

Dans le cas particulier où les parties imaginaires sont égales, le principe est d'utiliser une translation pour se ramener au cas précédent puis la conservation de la distance...

[r]