Une fois qu'on a un vecteur (une liste de nombres) en mémoire, toutes les opérations basiques sont réalisables. L'intérêt des vecteurs est de pouvoir réaliser une opération globalement et simulatnnément sur tous les nombres contenues dans le vecteur grâce à une seule commande à la fois. Si on veut effectuer la même opération sur plusieurs vecteurs à la fois, on requiert souvent que tous les vecteurs aient la même taille.
On définit d'abord un vecteur que l'on appelle "a" et comment soustraire et additionner un même nombre à toutes les composantes de ce vecteur à la fois. Le vecteur va contenir les nombres 1, 2, 3, and 4. Voila comment ajouter 5 à toutes les composantes, retrancher 10 et multiplier par 4 ainsi que finalement, diviser par 5.
> a <-c(1,2,3,4)
> a
[1] 1 2 3 4
> a + 5
[1] 6 7 8 9
> a - 10
[1] -9 -8 -7 -6
> a*4
[1] 4 8 12 16
> a/5
[1] 0.2 0.4 0.6 0.8
>
On peut enregistrer le résultat dans un vecteur "b":
> b <- a - 10
> b
[1] -9 -8 -7 -6
>
Si vous voulez prendre la racine carrée, l'exponentielle, le logarithme, etc ...les commandes usuelles peuvent être utilisées:
> sqrt(a)
[1] 1.000000 1.414214 1.732051 2.000000
> exp(a)
[1] 2.718282 7.389056 20.085537 54.598150
> log(a)
[1] 0.0000000 0.6931472 1.0986123 1.3862944
> exp(log(a))
[1] 1 2 3 4
>
On peut combiner toutes ces opérations avec des parenthèses:
> c <- (a + sqrt(a))/(exp(2)+1)
> c
[1] 0.2384058 0.4069842 0.5640743 0.7152175
>
On peut aussi additionner deux vecteurs qui ont le même nombre d'éléments et le résultat est un vecteur dont chaque composantes est la sommes des composantes correspondantes de chaque vecteur de la somme:
> a + b
[1] -8 -6 -4 -2
>
Ceci marche encore avec la mutliplication, la division ... :
> a*b
[1] -9 -16 -21 -24
> a/b
[1] -0.1111111 -0.2500000 -0.4285714 -0.6666667
> (a+3)/(sqrt(1-b)*2-1)
[1] 0.7512364 1.0000000 1.2884234 1.6311303
>
On doit malgré tout faire attention à une chose importante: quand vous faites une opération sur un vecteur, cette opération est effectuée composante par composante. Une des conséquences est que tous les vecteurs intervenant dans un même calcul doivent avoir le même nombre de composantes. Si ce n'est pas le cas, vous verrez s'afficher un message d'erreur, ou pire encore, un avertissement "warning" et des résultats peut être complétement faux:
> a <- c(1,2,3)
> b <- c(10,11,12,13)
> a+b
[1] 11 13 15 14
Warning message:
longer object length
is not a multiple of shorter object length in: a + b
>
Au cours d'une session R, vous pouvez avoir défini beaucoup de vecteurs et avoir oublié ce que vous avez fait. Pour obtenir la liste de toutes les variables que vous avez créée au cours de la session, vous pouvez utiliser la commande "ls()":
> ls()
[1] "a" "b" "bubba" "c" "last.warning"
[6] "tree" "trees"
>
Voici pour terminer deux variantes de la fonction qui prend le minimum de deux vecteurs. En effet, on peut vouloir connaître le minimum de toutes les composantes des deux vecteurs confondus, ou bien, composante par composante, le minimum entre les deux vecteurs:
> a <- c(1,-2,3,-4)
> b <- c(-1,2,-3,4)
> min(a,b)
[1] -4
> pmin(a,b)
[1] -1 -2 -3 -4
>
On reprend les données que l'on avait sauvergardées dans la variable "tree" qui était un data frame dans la session précédente.
> vessie = read.csv(file="vessie.csv",header=TRUE,sep=",")
Chaque colonne peut être récupérée comme étant un vecteur. Par exemple, les nombres associés à la colonne ATF3 comme suit:
> vessie$ATF3
[1] 0.11 0.02 0.76 0.06 0.97 0.09 0.04 1.27 0.88 0.50 0.30 0.06 0.04 0.76 0.59
[16] 0.22 0.09 0.53 0.69 0.90 1.71 0.07 0.28 0.09 0.74 0.88 0.06 0.63 0.42 0.16
[31] 0.23 0.04 0.18 0.18 0.13 0.03 0.20 0.10 0.09 0.03 1.06 0.06 0.03 0.17 0.05
[46] 0.11 0.25 0.22 0.50 0.99 0.57 1.93 1.34 0.61 0.07 0.06 0.02 0.04 0.23 0.12
[61] 0.27 0.05 0.04 1.89 0.35 0.15 0.78 1.02 0.30 0.10 0.05 0.04 0.20 0.49 0.15
[76] 0.15 0.03 0.11 0.22 0.17 0.09 0.10 1.57 0.16 0.06 0.72 0.19 0.30 0.06 0.05
[91] 0.85 0.05 2.01 0.33 0.05 0.42 0.04 0.15 0.17 0.29
>
Les commandes suivantes permettent d'obtenir la moyennes, la médiane, les quantiles, le minimum, le maximum, la variance, l'écart-type d'un ensemble de nombres:
> min(vessie$ATF3)
[1] 0.02
> max(vessie$ATF3)
[1] 2.01
> mean(vessie$ATF3)
[1] 0.3778
> median(vessie$ATF3)
[1] 0.175
> quantile(vessie$ATF3)
0% 25% 50% 75% 100%
0.020 0.060 0.175 0.540 2.010
> var(vessie$ATF3)
[1] 0.2102214
>
Comme d'habitude, la fonction "summary" permet d'obtenir en un seul coup le min, max, la moyennes, la médiane et les quantiles:
> summary(vessie$ATF3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0200 0.0600 0.1750 0.3778 0.5400 2.0100
>
La fonction "summary" est particulièrement pratique parce que si on lui l'applique à un "data frame", elle donne toutes les informations précedemment énumérées pour chaque vecteur du data frame:
> summary(vessie)
Nom Sexe Stade Groupe Grade Cl.anapath Cl.clinique
V005 : 1 F:20 pT1 : 2 0 :75 : 1 Min. :1.0 inv:24
V007 : 1 M:80 >pT1:24 1 :21 G1: 9 1st Qu.:1.0 sup:76
V009 : 1 pT1a:12 30/12/99: 1 G2:38 Median :2.0
V011 : 1 pT1b:11 31/12/99: 3 G3:52 Mean :1.8
V012 : 1 pTa :51 3rd Qu.:2.0
V013 : 1 Max. :3.0
(Other):94
Cl.sup ATF3 Bcl2.like14 BIRC5
Min. : 1.000 Min. :0.0200 Min. :0.0200 Min. :0.0000
1st Qu.: 1.000 1st Qu.:0.0600 1st Qu.:0.1700 1st Qu.:0.0400
Median : 1.000 Median :0.1750 Median :0.3600 Median :0.1150
Mean : 1.554 Mean :0.3778 Mean :0.5224 Mean :0.1605
3rd Qu.: 2.000 3rd Qu.:0.5400 3rd Qu.:0.6775 3rd Qu.:0.2225
Max. : 3.000 Max. :2.0100 Max. :2.4200 Max. :0.8500
NA's :26.000
CENPA Cyclin.D1 Cyclin.E1 Cyclin.E2
Min. :0.0070 Min. : 0.0400 Min. :0.00700 Min. :0.00080
1st Qu.:0.0600 1st Qu.: 0.5625 1st Qu.:0.02000 1st Qu.:0.00450
Median :0.1700 Median : 1.0800 Median :0.04000 Median :0.01000
Mean :0.2986 Mean : 1.7230 Mean :0.08911 Mean :0.02078
3rd Qu.:0.3925 3rd Qu.: 1.9725 3rd Qu.:0.09000 3rd Qu.:0.02000
Max. :2.1200 Max. :14.4100 Max. :0.68000 Max. :0.26000
GEC1 GEC3 H2AFZ HMGB2
Min. : 0.230 Min. : 0.330 Min. :0.0300 Min. :0.0000
1st Qu.: 1.390 1st Qu.: 1.370 1st Qu.:0.0700 1st Qu.:0.6475
Median : 2.200 Median : 2.120 Median :0.0950 Median :1.3950
Mean : 2.747 Mean : 2.925 Mean :0.1335 Mean :2.1636
3rd Qu.: 3.337 3rd Qu.: 3.490 3rd Qu.:0.1800 3rd Qu.:2.9725
Max. :16.920 Max. :17.430 Max. :0.4800 Max. :9.7100
HMGCS1 IL17Rb IL7 MAD2L1
Min. :0.090 Min. :0.0020 Min. :0.010 Min. :0.260
1st Qu.:0.270 1st Qu.:0.0400 1st Qu.:0.050 1st Qu.:0.670
Median :0.390 Median :0.0650 Median :0.100 Median :1.220
Mean :0.580 Mean :0.2344 Mean :0.142 Mean :1.760
3rd Qu.:0.655 3rd Qu.:0.2025 3rd Qu.:0.210 3rd Qu.:2.545
Max. :3.720 Max. :4.7000 Max. :0.730 Max. :6.500
MCM10 MCM2 MMP2 MMP9
Min. :0.0060 Min. :0.0180 Min. : 0.050 Min. :0.00020
1st Qu.:0.0400 1st Qu.:0.1000 1st Qu.: 0.330 1st Qu.:0.00080
Median :0.0700 Median :0.1600 Median : 0.600 Median :0.00340
Mean :0.1280 Mean :0.2949 Mean : 1.138 Mean :0.03099
3rd Qu.:0.1800 3rd Qu.:0.4100 3rd Qu.: 1.165 3rd Qu.:0.01000
Max. :0.8200 Max. :1.4500 Max. :13.430 Max. :0.57000
MMP11 ORC6L P.Cadherin PAI.1
Min. :0.0040 Min. :0.1000 Min. :0.0090 Min. :0.0400
1st Qu.:0.0200 1st Qu.:0.2550 1st Qu.:0.0500 1st Qu.:0.1300
Median :0.0300 Median :0.4050 Median :0.1000 Median :0.2600
Mean :0.1197 Mean :0.6407 Mean :0.1464 Mean :0.4517
3rd Qu.:0.0625 3rd Qu.:0.8425 3rd Qu.:0.2100 3rd Qu.:0.4775
Max. :1.7700 Max. :3.7600 Max. :1.2900 Max. :4.8200
RAD51 RAD54L RE.alpha REGF
Min. :0.0300 Min. :0.0800 Min. :0.000300 Min. : 0.080
1st Qu.:0.1075 1st Qu.:0.2475 1st Qu.:0.001275 1st Qu.: 0.880
Median :0.1900 Median :0.5950 Median :0.002450 Median : 1.255
Mean :0.2783 Mean :0.7749 Mean :0.005060 Mean : 1.918
3rd Qu.:0.3875 3rd Qu.:1.0425 3rd Qu.:0.005050 3rd Qu.: 2.115
Max. :1.1300 Max. :3.4800 Max. :0.060000 Max. :29.960
TIMP2 TK UBE2C uPA
Min. :0.0100 Min. :0.0100 Min. :0.0100 Min. :0.0100
1st Qu.:0.0700 1st Qu.:0.0400 1st Qu.:0.0575 1st Qu.:0.0700
Median :0.1200 Median :0.1000 Median :0.1300 Median :0.1300
Mean :0.2461 Mean :0.1932 Mean :0.2010 Mean :0.2244
3rd Qu.:0.2225 3rd Qu.:0.2500 3rd Qu.:0.2525 3rd Qu.:0.3125
Max. :2.3600 Max. :1.2700 Max. :1.0400 Max. :0.9900
uPAR USP54 Vimentin
Min. :0.001300 Min. :0.0300 Min. :0.0060
1st Qu.:0.006325 1st Qu.:0.0800 1st Qu.:0.0875
Median :0.009400 Median :0.1200 Median :0.1600
Mean :0.032464 Mean :0.1497 Mean :0.2986
3rd Qu.:0.030000 3rd Qu.:0.1900 3rd Qu.:0.2750
Max. :0.370000 Max. :0.9200 Max. :3.4500