Vous êtes sur la page 1sur 15

Introduction a R `

C. Dillmann, H. Devillers 23/03/2009

Table des mati`res e


1 Introduction 1.1 Chargement du logiciel . . . 1.2 Editeur . . . . . . . . . . . . 1.3 Aide . . . . . . . . . . . . . 1.4 Fentre graphique . . . . . . e 1.5 Rpertoire et environnement e . . . . . . . . . . . . . . . . . . . . . . . . de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 3 3 4 4 4 5 7 7 8 9 9 9 9 10 10 11 11

2 Scalaires, Vecteurs et Matrices 2.1 R, une machine a calculer . . . . . . . ` 2.2 Oprations sur les scalaires . . . . . . . e 2.3 Crer un vecteur ou une matrice . . . . e 2.4 Objets boolens et instructions logiques e 2.5 Extraire les lments dun vecteur . . . ee 2.6 Extraire les lements dune matrice . . e 2.7 Les cha nes de caract`res . . . . . . . . e 2.8 Les listes . . . . . . . . . . . . . . . . . 3 Tableaux de donnes : data.frames e 3.1 Lecture dun chier de donnes . . . . e 3.2 Extraire les colonnes dun tableau . . . 3.3 Extraire des lments dun tableau . . ee 3.4 Fonctions de desciption dun tableau de 3.5 Ralisation dun graphique . . . . . . . e

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . . . . . . . . . donnes e . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

4 Fonctions 12 4.1 Fonctions prdnies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 e e 4.2 Fonctions crites par lutilisateur . . . . . . . . . . . . . . . . . . . . . . . 13 e 5 Programmation 14 5.1 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2 Instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Introduction a R `

Introduction

Le langage R est un langage interprt qui se prsente sous la forme dun logiciel ee e libre (http://cran.r-project.org) et qui est devenu aujourdhui un standard dans tous les domaines scientiques. Les principaux sites web o` vous pouvez trouver des aides sur R u sont les suivants : Statistics with R : http://zoonek2.free.fr/UNIX/48R/all.html CRAN : http://cran.r-project.org/ Biostatistique Lyon 1 : http://pbil.univ-lyon1.fr/R/enseignement.html Jussieu EBGM : http://www.leslieregad.com/chiercours/IntroductionR.pdf Ce logiciel permet de grer des tableaux de donnes et de faire des analyses statistiques, e e des reprsentations graphiques, de lanalyse dimages et du calcul numrique. Ce tutoriel e e a pour buts dintroduire les bases du langage R, quelques rudiments de programmation, et quelques fonctions utiles pour lanalyse des donnes. Il vous sut de lire le poly et de e faire les exercices sous R. Dans ce manuel, le texte tap par l'utilisateur ainsi que les rponses du logiciel e e sont en police courrier.

1.1

Chargement du logiciel

Dans le menu Demarrer de Windows, choisir le programme R. Au chargement de R, une fentre de contrle souvre (R console). Dans cette fentre de contrle, on peut e o e o rentrer des instructions apr`s le prompt >. Le fonctionnement de R est simple. On tape e des commandes dans la fentre de contrle, et le logiciel excute ces commandes et ache e o e le rsultat. Dautres fentres peuvent tre ouvertes a partir de la fentre de contrle. e e e ` e o

1.2

Editeur

Lditeur de R souvre en choisissant longlet nouveau script dans le menu Fichier. e Lorsque lon doit manipuler un grand nombre dinstructions, il est plus facile de les taper dabord dans lditeur, puis de les copier et de les coller dans la fentre de contrle. Cela e e o permet galement de garder une trace de son travail. Une ligne tape dans lditeur peut e e e tre recopie dans la fentre de contrle en cliquant sur le bouton Run line ou a laide e e e o ` du raccourci Ctrl-R . Pour excuter plusieurs lignes a la fois, il sut de les slectionner. e ` e Dans lditeur, tapez "bonjour" (sans oublier les guillemets) et excutez la commande. e e Regardez ce qui se passe dans la fentre de contrle : e o > "bonjour" [1] "bonjour" Vous avez cr un objet qui contient un lment qui a la valeur "bonjour". ee ee Sauvegardez votre script !

Introduction a R `

1.3

Aide

Il existe plusieurs faons dobtenir de laide sous R. Toutes les fonctions de base sous c R poss`dent une documentation spcique qui peut tre appele a laide de la fonction e e e e ` help. Ainsi pour obtenir la documentation de la fonction plot il sut de faire : > help(plot) La commande ?plot (le ? devant le nom de la fonction) donne le mme rsultat. Enn, e e la fonction help.start() permet douvrir la version online (HTML) de laide R. Dans certains cas, il arrive que lon ne connaisse pas exactement le nom dune fonction que lon souhaite utiliser. Il est alors possible de retrouver cette fonction grce a a help.search("mot_cl") qui vous achera une liste des fonctions en rapport avec ` e mot_cl. e Il arrive galement que lon ne se souvienne que dune partie du nom dune fonction, on e peut alors utiliser la fonction apropos("pattern") pour lister les noms des fonctions qui contiennent pattern. Ainsi, par exemple, si on souhaite conna tre toutes les fonctions contenant help : > apropos("help") [1] "help" "help.request" [5] "link.html.help" "help.search" "help.start"

Enn, si aucune des fonctions prcdentes na permis de rsoudre votre probl`me, il reste la e e e e fonction RSiteSearch("mot_cl1 mot_cl2 ...") qui permet de faire directement une e e recherche dans la R-help mailing list (sorte de forum de discussion ddi a lutilisation e e` de R) ainsi que dans toutes les documentations de R et qui ache les rsultats dans une e page Web.

1.4

Fentre graphique e

Une fentre graphique souvre automatiquement a lappel de la fonction plot. Vous e ` pouvez aussi en ouvrir une en appellant la fonction X11().

1.5

Rpertoire et environnement de travail e

Une des premi`res tapes lorsque lon dmarre R est de dnir le rpertoire de trae e e e e vail, cest a dire le rpertoire de votre disque dur avec lequel R va communiquer (lec` e ture/criture des donnes, des scripts, des rsultats, des gures, etc.). Pour cela, il sut e e e daller dans le menu Fichier->Changer le rpertoire courant. Pour vrier que lon est e e bien dans le bon rpertoire, on peut taper la commade getwd() dans la console. e Enn, lorsque lon quitte R, soit par linstruction q() dans la console soit en passant par le menu Fichier->Sortir, R nous demande si on souhaite enregistrer lenvironnement de travail (ou la session). En cliquant sur OUI, R va alors sauvegarder toutes les donnes de e votre environnement dans le rpertoire de travail (dni plus haut) dans un chier nomm e e e .RData ainsi que toutes les lignes de commande que vous avez excutes dans la console e e dans le chier .Rhistory. Ce deux chiers peuvent ainsi tre rechargs au prochain lancee e ment de R soit en dmarrant R directement dans le rpertoire de travail correspondant, e e soit en allant dans le menu Fichier->Charger lenvironnement de travail. 3

Introduction a R `

2
2.1

Scalaires, Vecteurs et Matrices


R, une machine ` calculer a

R peut tre utilis comme une simple calculatrice, pour cela il sut dcrire directement e e e lopration dans la console et dappuyer sur Entre : e e > (2 + 2) * 3 + 1 [1] 13 On peut ainsi faire toutes les oprations que lon souhaite grce aux oprateurs +, -, *, /, e a e ^ (puissance), etc. R poss`de aussi un tr`s grand nombre de fonctions mathmatiques prdnies. En voici e e e e e une liste non exhaustive : Principales fonctions mathmatiques : e log()/log10() exp() cos()/sin()/tan() abs() sqrt() Logarithme nprien/dcimal. e e e Exponentielle. Cosinus/Sinus/Tangente. Valeur absolue. Racine carre (square root). e

2.2

Oprations sur les scalaires e

En dehors de la fonction de machine ` calculer, on peut manipuler des scalaires, veca teurs ou matrices de faon symbolique, en leur aectant un nom. Pour crer un scalaire c e a et lui donner la valeur 6, il faut taper a=6. Pour voir la valeur de a, on tape a. On peut ainsi crer des variables, puis eectuer des oprations sur ces variables : e e > a > b > b [1] = 6 = 2.5 * a 15

> a * b + 4 [1] 19 > b^a [1] 244.1406 > log(a) [1] 1.791759 > exp(-b) [1] 0.082085 Remarque : Il est fortement dconseill dutiliser des noms de fonctions pour nommer e e ses objets comme par exemple c=1 car c() est une fonction prdnie de R. e e 4

Introduction a R `

2.3

Crer un vecteur ou une matrice e

Essayez la suite dinstructions suivantes, en les tapant dans lditeur, puis en les recoe piant dans la fentre de contrle : e o > a = 6 > b = 5 > x = c(a, b, a + b, a * b) Tapez maintenant x dans la fentre de contrle : e o > x [1]

5 11 30

Vous avez cr un vecteur de quatre lments qui contient 5, 6, 11 et 30. Vous pouvez ee ee eectuer des oprations sur le vecteur x. Par exemple, pour multiplier tous les lments e ee de x par 2 et retrancher la valeur 3, il sut de taper : > 2 * x + 3 [1] 15 13 25 63 Il existe direntes faon de crer un vecteur : e c e Crer des vecteurs : e Voici une liste des principales fonctions pour crer des vecteurs. e c(2,3,4,5) rep(1,10) seq(1,10,by=2) seq(1,10,length=5) 1:10 c(rep(1,10),2:8) rep(c(1,2),c(4,10)) Vecteur Vecteur Vecteur Vecteur Vecteur Vecteur Vecteur constitu des lments mis entre parenth`se. e ee e o` llment 1 est rpt 10 fois. u ee e ee dont les lements vont de 1 a 10 avec un pas de 2. e ` de 5 lments entre 1 et 10. ee dincides de 1 ` 10. a a partir de deux vecteurs. ` o` 1 est rpt 4 fois et 2 est rpt 10 fois. u e ee e ee

Vous remarquerez que les noms des fonctions utilises pour crer des vecteurs sont des e e abrviations (c pour concatenate, seq pour sequence et rep pour replicate). e Exercice Crez les vecteurs suivants, que vous appellerez y1, y2, y3 et y4, avec d = 4 et e = 12 : e y1 : une suite dindices de 1 ` 30. a y2 : trois fois llment d, puis trois fois d au carr, puis trois fois la racine de d. ee e y3 : la squence de 1 ` 20 avec un pas de deux. e a y4 : 10 chires compris entre 1 et 30 avec un intervalle constant.

Introduction a R `

Crer des matrices : e Voici une liste des principales fonctions pour crer des matrices. e matrix(x, ncol=2) Transforme le vecteur x en une matrice de 2 colonnes. matrix(x, ncol=2, byrow=T) Idem, mais en remplissant la matrice ligne a ligne. ` rbind(x,y) Concat`ne x et y en lignes. e cbind(x,y) Concat`ne x et y en colonnes. e Exercice Pour comprendre comment crer une matrice, comparez les rsultats des instructions e e suivantes : > matrix(y3, nrow = 2) > matrix(y3, nrow = 2, byrow = T) La faon la plus simple pour fabriquer une matrice sous R est de crer dabord un vecteur c e contenant tous les lments de la matrice, puis de transformer ce vecteur en matrice a ee ` laide de la fonction matrix. Fabriquez la matrice M de 3 lignes et 5 colonnes ne contenant que des zros. e Remarque : Il existe un certain nombre doprations spciques aux vecteurs et aux e e matrices. Ainsi, par exemple, comparez les deux oprations suivantes : e > y = 1:4 > m = matrix(1:16, ncol = 4) > y * m [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 4 12 20 28 [3,] 9 21 33 45 [4,] 16 32 48 64 > y %*% m [,1] [,2] [,3] [,4] [1,] 30 70 110 150 Quand on utilise * on multiplit simplement terme ` terme les lements du vecteur dans a e la matrice alors quavec %*% on fait un vrai produit matriciel. Principales fonctions et oprations sur les vecteurs et les matrices : e %*% t(x) det(x) diag(x) Produit matriciel. Transpose x. Calcule le dterminant de la matrice x. e Retourne la diagonale de la matrice x dans un vecteur.

Introduction a R `

2.4

Objets boolens et instructions logiques e

Pour extraire les lments dun vecteur, on peut utiliser des instructions logiques. Un ee vecteur boolen est un vecteur dont chaque lment prend la valeur TRUE ou T (vrai) si e ee linstruction logique est vraie, et la valeur FALSE ou F (faux) si linstruction logique est fausse. Par exemple, comparez le contenu du vecteur x, et le rsultat de linstruction : e > x > 5 [1] TRUE FALSE

TRUE

TRUE

Linstruction logique x>5 renvoie un vecteur contenant TRUE pour les lments de x suee prieurs strictement a 5 et FALSE sinon. Les instructions peuvent aussi tre combines a e ` e e ` laide des oprateurs & (et) et | (ou) (touche AltGr+6) : e > x > 5 & x < 30 [1] TRUE FALSE TRUE FALSE Les oprations logiques : e a==b a!=b a<b a>=b a|b xor(a,b) a&b Vrai Vrai Vrai Vrai Vrai Vrai Vrai si si si si si si si a a a a a a a est gale a b. e ` est dirent de b. e est strictement infrieur a b. e ` est suprieur ou gale ` b. e e a ou b ou les deux sont vrais. ou b sont vrais. et b sont vrais.

Exercice En utilisant les vecteurs y1, y2 et y3 cres dans lexercice prcdent, crez les vecteurs e e e e boolens b1, b2, b3 et b4 qui correspondent aux instructions logiques suivantes : e b1 : vrai pour les lments du vecteur y3 infrieurs a 10, faux sinon. ee e ` b2 : vrai pour les lments du vecteur y2 suprieurs a 2 et infrieurs a 16. ee e ` e ` b3 : vrai pour les lments du vecteur y2 suprieurs a 2 ou infrieurs ` 16. ee e ` e a b4 : vrai si les lments de y1 valent 10. ee

2.5

Extraire les lments dun vecteur ee

Pour extraire les lments du vecteur, il sut de taper la commande x[z], o` z est ee u soit un vecteur dindices, soit un vecteur de boolens. Dans ce dernier cas, z doit obligae toirement avoir la mme longueur que x. Par exemple : e > x = c(1, 3, 5, 7, 9, 12, 14, 18, 22) > x[1] [1] 1 7

Introduction a R `

> x[1:3] [1] 1 3 5 > x[x > 5] [1] 7 9 12 14 18 22

Exercice Crez le vecteur valeur contenant 20 nombres alatoires entre 0 et 1 en utilisant la e e commande : > valeur = runif(20) Crez ensuite un vecteur dindices prenant la valeur 1 pour les 10 premiers nombres, et la e valeur 2 pour les 10 suivants : > indix = rep(c(1, 2), c(10, 10)) En utilisant une instruction logique sur le vecteur indix, crez un nouveau vecteur e dix contenant les 10 premi`res valeurs du vecteur valeur. Pour vous aider, vous poue vez visualiser les deux vecteurs indix et valeur cte a cte a laide de la fonction cbind. o ` o `

2.6

Extraire les lements dune matrice e

Pour extraire des lments dune matrice Z, il faut choisir les lignes et les colonnes de la ee matrice que lon souhaite garder, en utilisant des indices et/ou des instructions logiques. Z[x,y] est la sous-matrice de Z contenant les lignes de Z dnies par le vecteur x et les e colonnes de Z dnies par le vecteur y. x et y peuvent tre des vecteurs dindices ou des e e vecteurs boolens. Linstruction Z[x,] renvoie toutes les colonnes de Z pour les lignes e correspondant a x. Linstruction Z[,y] renvoie toutes les lignes de Z pour les colonnes ` correspondant ` y. a Exercice Construisez la matrice Z suivante : 1 2 3 4 Z = 5 6 7 8 9 10 11 12 Puis achez : - Llment de Z contenu dans la premi`re ligne et la troisi`me colonne. ee e e - La premi`re ligne de Z. e - La troisi`me colonne de Z. e - La sous-matrice apr`s avoir enlev la premi`re ligne et la premi`re colonne de Z. e e e e

Introduction a R `

2.7

Les cha nes de caract`res e

Les cha nes de caract`res sont un type dobjet qui permet de manipuler des squences e e de lettres. Pour crer une cha de caract`res il sut de lcrire entre guillemets : e ne e e > a = "Bonjour" Il est aussi possible de faire des vecteurs de cha nes de caract`res : c("Bon", "jour"). e Manipulation de cha nes de caract`tres : e Coupe la cha x en fonction de la cha s. ne ne Ex. : strsplit("bonjour", "j") => "bon" "our" paste(x1,x2) Concat`ne les deux cha e nes x1 et x2 . as.character(x) Convertit lobjet x en une cha ne. as.numeric("1.5") Convertit la cha "1.5 "en valeur numrique 1.5. ne e strsplit(x, s)

2.8

Les listes

Les listes sont des objets particuliers qui permettent dassocier dautres objets de natures direntes. Une liste se cre de la faon suivante : e e c > ma_list = list(val = 1, chaine = "Bonjour", vect = 1:10) > ma_list$chaine [1] "Bonjour" Pour appeler un lment dune liste il sut dcrire le nom de lobjet liste suivi de $ + ee e le nom de lobjet souhait. e

Tableaux de donnes : data.frames e


Sous R, les tableaux de donnes sont des objets particuliers appels data.frame. e e

3.1

Lecture dun chier de donnes e

Pour lire un chier de donnes, il faut commencer par crer une variable qui contient e e le nom du chier grce a la fonction file.choose(). Nous allons ouvrir le chier cia ` netik.txt. Tapez la commande ci-dessous dans lditeur et valuez l` dans la fentre de e e a e contrle : o > nomfichier = file.choose() R ouvre alors une fentre avec larborescence de chiers de Windows. Recherchez le chier e cinetik.txt et cliquez sur son nom. Ensuite on utilise la fonction read.table() qui permet de lire un tableau de donnes : e > data = read.table(monfichier, header = TRUE) 9

Introduction a R `

Linstruction header=TRUE permet de prciser que la premi`re ligne du chier a lire est e e ` une ligne den-tte contenant le nom des colonnes du tableau. Vous pouvez acher le e tableau data en tapant : > data Notons quil est galement possible de lire un chier de donnes via une url : e e > data = read.table("http://moulon.inra.fr/~mag/cinetik.txt", h = T) Un tableau de donnes est un ensemble de vecteurs rangs colonne par colonne. Chaque e e colonne du tableau data correspond a une variable, chaque ligne a un individu. Ici, les ` ` donnes correspondent a des mesures de densit optique dans des cultures de bactries e ` e e soumises ou non ` un traitement. Il y a cinq souches de bactries, et toutes les souches a e ont t observes au cours de quatre expriences direntes. La structure du chier est la ee e e e suivante : Desciption du chier cinetik.txt : manip souche temps temoin eff Numro de lexprience. e e Lettre pour le code de la souche de bactrie. e Temps en heure. Densit optique dans la culture temoin. e Densit optique dans la mme culture soumise a un traitement. e e `

3.2

Extraire les colonnes dun tableau

La fonction colnames(data) renvoie les noms des colonnes du chier de donnes data. e Pour voir uniquement une colonne du tableau (par exemple la colonne temps), il sut de taper data$temps. Exercice Achez les noms des colonnes du tableau data, puis achez la colonne correspondant ` a la densit optique des bactries tmoins. e e e

3.3

Extraire des lments dun tableau ee

Pour extraire les lments dun tableau, on peut aussi excuter la commande data[x,y], ee e o` x est un vecteur dindices ou un vecteur de boolens (dans ce cas, il doit avoir le mme u e e nombre dlments que le nombre de lignes du tableau data), et y est un vecteur dindices ee ou un vecteur de boolens (dans ce cas, il doit avoir le mme nombre dlments que le e e ee nombre de colonnes du tableau data). Linstruction data[x,] renvoie toutes les colonnes du tableau pour les lignes correspondant ` x. Linstruction data[,y] renvoie toutes les a colonnes du tableau pour les lignes correspondant ` y. a Exercice Que vaut data[1,5] ? Que vaut data[,1:3] ? Que vaut data$manip==1 ? Que vaut data[data$manip==1,] ? 10

Introduction a R `

Que vaut data$souche=="A" ? Extraire les trois premi`res lignes du tableau data. e Extraire les valeurs de eff pour la souche B et la manip 2.

3.4

Fonctions de desciption dun tableau de donnes e

Voici quelques fonctions utiles pour dcrire et analyser un tableau de donnes. e e Fonctions de base pour tudier et analyser des tableaux de donnes : e e dim(data) length(data$souche) colnames(data) max(data$eff, na.rm=T) min(data$eff, na.rm=T) table(data$manip, data$souche) summary(data) head(data)/tail(data) Renvoie les dimensions du tableau. Renvoie la longueur du vecteur data$souche. Renvoie un vecteur contenant les noms des colonnes du tableau. Valeur maximale du vecteur data$eff. Valeur minimale du vecteur data$eff. Tableau de contingence pour les deux variales. Renvoie un rsum des distributions de chaque e e variable de data. Renvoie les 6 premi`res/derni`res lignes de data. e e

Exercice Combien y-a-til de souches et de manips dans cette exprience ? e

3.5

Ralisation dun graphique e

Direntes fonctions permettent de reprsenter graphiquement des donnes. Une fee e e ntre graphique souvre automatiquement ` lappel de la fonction plot. La fonction e a points permet de rajouter des points sur un graphique. Par exemple, observez le re sultat des instructions suivantes : > plot(data$temps, data$temoin) > points(data$temps, data$eff, col = 2) Pour raliser des graphiques plus jolis, vous pouvez jouer avec les options de la fonction e plot.

11

Introduction a R ` Principaux arguments de la fonction plot : xlab= ylab= main= type= Label de laxe des abscisses, entre quotes. Label de laxe des ordonnes, entre quotes. e Titre du graphique, entre quotes. Type de points : p pour des points (valeur par dfaut), e l pour des lignes, b pour des points et des lignes (both), h pour des barres verticales, n pour ne rien acher (none). Forme des points : 1=rond, 2=triangle, ... Pour voir les possibilits, tapez : e plot(1:20, 1:20, pch=1:20, cex=2) Taille des points (dfaut =1). e Type de lignes : 1=traits plains, 2=pointills, ... e Epaisseur des lignes (dfaut =1). e Couleur des points ou des lignes. 1=noir, 2=rouge, ...

pch=

cex= lty= lwd= col=

Pour voir, excutez cet un exemple : e > plot(data$temps, data$temoin, xlab = "Temps (heures)", ylab = "DO", + pch = 19, cex = 1.5) > points(data$temps, data$temoin, pch = 19, cex = 1.5, col = 2) Les principales fonctions graphiques : Fonctions ouvrant une fentre graphique. e plot(x,y) Trace des points et/ou des lines. hist(x, breaks) Trace un histogramme de la distribution de x . boxplot(list(x1,x2)) Trace des botes ` moutaches pour x1 , x2 ... a Fonctions lances apr`s louverture dune fentre graphique. e e e points(x,y) Ajouter des points. lines(x,y) Ajouter des courbes. legend(x,y, leg) Ajouter une lgende. e arrows(x0,y0,x1,y1) Ajouter une `che. e

Fonctions

Les fonctions sous R sont des objets particulers qui permettent de dcouper un proe gramme en un ensemble dactions.

12

Introduction a R `

4.1

Fonctions prdnies e e

Il existe beaucoup de fonctions dj` programmes sous R. Une fonction a trois attriea e ` buts : Son nom. Un ensemble darguments qui sont les objets ncessaires a la ralisation des instruce ` e tions de la fonction. Lobjet quelle renvoie. Typiquement on appelle une fonction de la faon suivante : c x=nom_fonction(arg1, arg2, arg3) Pour conna la liste compl`te des fonctions prdnies de R, il sut de taper : tre e e e > ls("package:base") Laide en ligne de R est particuli`rement bien faite. Elle comprend une description de la e fonction, son utilisation, la liste des arguments avec une explication de leur usage, des exemples et les valeurs par dfauts. e

4.2

Fonctions crites par lutilisateur e

Il est possible dcrire soit mme des fonctions en utilisant lditeur. Voici un exemple e e e de fonction, avec la syntaxe ` utiliser : a randomvec=function(a,n) { alea=runif(n)*a alea } En-tte de la fonction. e alea contient n nombres alatoires entre 0 et a. e Renvoie le vecteur alea. Fin de la fonction.

Notez que le mot function est un mot rserv. Les accolades { et } dnissent le dbut e e e e et la n de la fonction. La derni`re instruction doit contenir le nom de lobjet renvoy par e e la fonction (ici, le vecteur alea). Avant de pouvoir appeler cette fonction dans la fentre e de contrle, il faut lvaluer. Il sut pour cela de la copier dans la fentre de contrle. o e e o Ensuite, elle peut tre appele : e e > Y = randomvec(10, 100) > length(Y) [1] 100 > Y[1:5] [1] 9.300530 5.970160 9.975559 8.900480 7.662304 Exercice Dans certains cas, il peut tre utile de simuler des donnes. Nous vous proposons ici de e e simuler deux populations de mme variance mais de moyennes direntes, puis de raliser e e e des permutations pour tester lhypoth`se H0 que les deux moyennes sont gales. Il sagit e e bien entendu dun cas dcole, puisque lon conna ici la loi de probabilit de la statistique e t e du test dgalit des deux moyennes. e e

13

Introduction a R `

1. Utilisez la fonction rnorm pour simuler deux populations pop1 et pop2, de mme taille, e de mme variance mais de moyennes direntes. Les param`tres dont vous aurez besoin ici e e e sont m1 et m2, les deux moyennes, la taille de chaque chantillon n et lcart-type sigma. e e Utilisez laide de la fonction rnorm pour conna sa syntaxe. tre 2. Concatnez les valeurs obtenues dans un vecteur val, et crez un vecteur dindices e e pop pour reprer les populations dont sont issues les valeurs simules. Concatnez ces e e e deux vecteurs dans un tableau de donnes que vous appellerez don en utilisant linstruce tion don=data.frame(pop=pop, val=val). Vous pouvez faire un histogramme du vecteur data$val pour regarder la distribution des valeurs simules. e 3. Il peut tre intressant de rpter cette simulation avec des param`tres dirents. e e e e e e Pour cela, crez une fonction que vous appellerez randompop qui prend comme argue ments m1,m2,n,sigma, qui rassemble les instructions des tapes 1 et 2, et qui renvoie le e tableau data. Copiez la fonction dans la fentre de contrle. Testez ensuite votre fonction e o avec par exemple les instructions suivantes : > data = randompop(1, 2, 100, 1) > hist(data$val, 20) Refaites plusieurs fois la simulation en changeant la valeur de m2. 4. Ralisez un test de student de comparaison des deux moyennes en achant dans la e fentre de contrle : e o >t.test(data$val[data$pop==1],data$val[data$pop==2]) >true.t=t.test(data$val[data$pop==1],data$val[data$pop==2])$statistic >pval.t=t.test(data$val[data$pop==1],data$val[data$pop==2])$p.value

5
5.1

Programmation
Boucles

Comme dans la plupart des langages de programmation, il y a plusieurs faons de c rpter une instruction en boucle, les boucles for et les boucles while. Les instructions e e suivantes sont quivalentes : e x=2 n=4 n=1 x=2 while(n<5){ for(i in 1:n){ x=x+2 x=x+2 n=n+1 } } Que vaut le x a la n de la boucle ? `

14

Introduction a R `

5.2

Instructions conditionnelles

la syntaxe if(condition){instruction} permet de calculer les instructions uniquement si la condition est vraie. Par exemple, if(x<0){x=-x} transforme x en nombre positif. On peut aussi dnir un jeu dinstructions pour le cas o` la condition est fausse : e u if(x=0){ x=x+1 } else{ x=0 } Exercice A partir du tableau data que vous avez simul, vous pouvez maintenant raliser un test e e de permutation pour tester lhypoth`se dgalit des moyennes des deux populations. Si e e e lhypoth`se H0 est vraie, alors vous pouvez raecter au hasard des indices dappartenance e e a une population ou ` une autre ` chaque entre du tableau data cr prcdemment. ` a a e ee e e 1. Utilisez la fonction sample pour gnrer une permutation au hasard des indices contee e nus dans le vecteur data$pop, que vous appellerez p.pop. 2. Vous pouvez raliser un test de Student pour comparer les moyennes des deux poe pulations ctives ainsi cres, la population des entres du tableau data pour lesquelles ee e p.pop==1, et la population des entres pour lesquelles p.pop==2. Vous pouvez stocker la e statistique du test dans un vecteur H0.t. 3. Initialisez H0.t en utilisant linstruction : >H0.t=NULL Puis crivez une boucle pour raliser 1000 permutations. A chaque nouvelle permutation, e e vous incrmenterez H0.t de la nouvelle valeur de la statistique de test en utilisant linse truction : >H0.t = c(H0.t, t.test(data$val[p.pop==1],data$val[p.pop==2])$statistic) Vous avez cr un vecteur contenant 1000 valeurs de la statistique du test sous lhypoth`se ee e H0 . 4. Vous pouvez maintenant calculer une probabilit critique empirique pour votre test. e Pour cela, crez un vecteur boolen qui contient TRUE si la valeur absolue de H0.t est sue e prieure a la valeur observe true.t . La valeur absolue dun rel sobtient en utilisant la e ` e e fonction abs. Pour nir, vous utiliserez la proprit suivante : si x est un vecteur boolen, ee e alors sum(x) renvoie la somme des termes vrais du vecteurs.

15