Cours 2 Vecteurs, matrices,listes,séries temporelles, data frames
Génération de matrices Ce sont des vecteurs qui possèdent un argument supplémentaire, qui est lui-même un vecteur de longueur 2, sa dimension, et qui définit le nombre de lignes et de colonnes ex: M=matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL) Sélection dans une matrice,sous-matrices M[1,2],M[c(2,3),c(3,4)] M[i,],M[,j]: sélection d’une ligne ou d’une colonne M[c(1,5,4),]: sélection de plusieurs lignes (1,5 et 4) Dimension d’une matrice: dim(): renvoie la dimension de la matrice. On peut aussi imposer cette dimension
Génération de matrices(suite) exemple: v=1:12; M=matrix(v);dim(M)=c(3,4);M; [,1] [,2] [,3] [,4] [1,] [2,] [3,] Indice linéaire (par colonne) M[v],M[-v] exemple:M[-3] donne la matrice privée de son troisième élément, soit un vecteur M[M[,1]>0,]:sélectionne la sous matrice pour laquelle les valeurs dans la première colonne sont positives
Opérations sur les matrices Les opérateurs habituels fonctionnent élément par élément Le produit matriciel algébrique:%*% t():transposition diag(): si v est un vecteur, diag(v)crée une matrice diagonale ayant v sur la diagonale si M est une matrice, diag(M) extrait la diagonale de M sum():si v est un vecteur ou une matrice, sum(v) calcule la somme de tous les éléments de v sum(v,na.rm=TRUE):somme sans tenir compte des NA
det(): déterminant d ’une matrice carrée solve():inverse d ’une matrice, ou résolution d ’un système d ’équations linéaire eigen(): calcul des valeurs propres et vecteurs propres Opérations sur les matrices (suite)
Opérations sur les matrices (suite) 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)) exemples: apply(M,1,sum):le résultat est une colonne formée des sommes des lignes de la matrice apply(M,2,sum):pareil pour les colonnes
Les listes Création de listes: avec la fonction list() Il n’y a aucune contrainte sur les objets qui y sont inclus Exemple: x=1:10;y= letters ; L=list(x,y); crée une liste sans nom L=list(chiffres=0:9,lettres=letters);L $chiffres [1] $lettres [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" Les deux champs sont accessibles par L$chiffres; L$lettres;
Les listes (exemple) ● On trouve souvent des listes comme résultat d'une commande R ● exemple:lm() est une fonction retournant pour un modèle linéaire une liste contenant au moins: coefficients, résidus, valeurs estimées,rangs, poids....
Les series temporelles La fonction ts() va créer une série temporelle à partir d’un vecteur (ou d’une matrice), et des options suivantes ts(data=,start=,end=,frequency=…) data:un vecteur ou une matrice start: le temps de la première observation end:le temps de la dernière observation frequency: le nombre d’observations par unité de temps
t=ts(matrix(rpois(36,5),12,3),start=c(1961,1), frequency=12) Series 1 Series 2 Series 3 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
plot(t)
data.frame En interne ce sont des listes, dont les champs sont des colonnes En apparence ce sont des matrices, avec comme différence essentielle que les différentes colonnes peuvent être de modes distincts:alphanumériques, booléennes, facteurs… Les lignes et les colonnes sont nommées et on peut y accéder par leur indice de position ou par leur nom… exemple: L= LETTERS[1:3]; D=data.frame(=rep(1,10),y=1:10,fac=sample(L,10, repl=TRUE)); La troisième colonne est D[,3]ou D[,”fac”]ouD$fac C’est le type par défaut résultant de la lecture de fichiers externes et nécéssaire pour exporter des tableaux de R x y fac C C A B A A B A B C
Fonctions pour les data frames data.frame(): names(),colnames()rownames()liste des noms de ligne et de colonnes dimnames():liste ayant 2 champs: les noms de lignes et les noms de colonne dim():liste donnant les dimensions du data frame cbind():concaténation en colonne rbind():concaténation en ligne Exemple:cbind(d,salle=rep(c(1,2),5)) x y fac salle B A B A C C B C B A 2
La fonction data() : Cette fonction permet de lire des données internes un data.frame ou de lister les data frame existants Exemples: data() # liste de tous les data frame dans le package par défaut « datasets » data(USArrests) # charge le data frame USArrests help(USArrests) # donne des informations sur le data frame « USArrests », si elles existent data(package =.packages(all.available = TRUE))# Donne la liste de tous les data frames de tous les packages disponibles try(data(package = "rpart") )# liste des data frame dans le package rpart
La fonction library() Exemples: library():donne la liste des packages disponibles On peut en charger d’autres par le CRAN par exemple library(cluster);data(agriculture);permet de charger le data frame « agriculture » du package « cluster » data(agriculture, package=« cluster »); permet aussi de charger ce data frame
Importer des fichiers ascii Pour les lectures et écritures dans un fichier, R utilise le repertoire de travail. getwd():permet de connaître ce repertoire setwd():permet de modifier le repertoire de travail exemple setwd(« c:/data ») R peut lire des données stockées dans un fichier texte (ascii):read.table() la sortie est un data.frame arguments de cette fonction: file= nom du fichier sep= séparateur (espace par défaut) header= booléen (=TRUE si le nom des colonnes est en tête, FALSE sinon)
Exemple: fichier c:/ArR/fic.txt read.table(file=,sep=,header=) F=read.table(« c://ArR//fic.txt », sep=« \t»,header=TRUE); Variantes:read.csv(), read.delim(),read.fwf() On peut importer des fichiers dans d ’autres formats, spécifiques à certains logiciels, (SAS,SPSS, bases de données SQL), à l'aide du package foreign On peut importet directement des feuilles Excell
et exporter Ecriture d’un fichier write.table() arguments: file= nom du fichier append= booléen si TRUE ajoute au fichier existant, si FALSE ecrase le fichier existant col.names= booléen si TRUE écrit les noms de colonnes row.names= idem pour les lignes
Modes ouiNumérique, caractère, complexe logiqueListe list ouiNumérique,caractère,complexe logiqueSérie temporelle ts OuiNumérique,caractère,complexe logiqueData.frame NonNumérique,caractère,complexe logiqueMatrice matrix NonNumérique,caractère,complexe logiqueTableau array NonNumérique,caractèreFacteur factor NonNumérique,caractère,complexe logiqueVecteur vector Plusieurs modesModes possibles
Extensions de R, les packages ● Les packages R fournissent un ensemble cohérent de fonctions supplémentaires, spécialisées dans un certain domaine ● Souvent accompagnés d'autres jeux de données ● Quelquefois certaines fonctions classiques sont redéfinies
Gestion de packages ● Installation install.packages(«... ») ● Mise à jour update.packages()
Génération de nombres aléatoires Exemples: sample():échantillon, tirages avec ou sans remise, permutations exemples: v1= sample(1:10) : permutation de{1,2,..,10} v2= sample(1:10,3) : tirage sans remise (par défaut )de 3 éléments parmi 10 v3= sample(1:2,10,replace=TRUE) : tirage avec remise de 10 valeurs 1 ou 2 au hasard pour un tirage non uniforme on précise le vecteur probabilité(p1,…pn) avec pi=1. exemple:v4=sample(1:5,3,prob=c(0.1,0.2,0.1,0.5,0.1)) rnorm(100):génère 100 observations issues de la loi normale de paramètres 0 et 1 (par défaut) rnorm(100, mean=2,var=3): génére 100 observations issues de la loi normale de paramètres 2 et 3