Vous êtes sur la page 1sur 15

Cours 5: Programmation dans R

XIII- Boucles
XIV- Programme R
XV- Fonctions
XVI- Fonctions de base
XIII- Boucles et Tests

 R possède des instructions qui rappellent le langage C.

 Principales instructions :
 for( in ) { }: exécute une instruction sur certaines valeurs
 while( ) { } : exécute une instruction tant qu’elle est vraie
 if() … else : Exécutions conditionnelles

NB : Dans de nombreux cas, les boucles peuvent être évitées grâce à la


vectorisation et à l’utilisation de fonctions, plus simples et moins
coûteuses en temps. (fonctions de type apply() très utile).

NB : Si l’on crée des objets dans une boucle, il faut toujours les définir
avant.
XIII- Boucles et Tests

Exemple 1 : on crée un vecteur valant 0 si x vaut 3, 1 sinon, et on


l’additionne avec x

 Solution 1 : Boucle  Solution 2 : Vectorisation

>x=sample(1:10,10, rep=T);x >x=sample(1:10,10, rep=T);x


[1] 7 3 5 7 6 3 1 1 6 9 >y[x==3]=0
>y=numeric(length(x)) >y[x!=3]=1
> for( i in 1:length(x)) {if (x[i]==3)
y[i]=0 else y[i]=1};y >z=x+y
[1] 1 0 1 1 1 0 1 1 1 1
>z=numeric(length(x))
>for(i in 1:length(x)) { z[i]=x[i]+y[i]};z
[1] 8 3 6 8 7 3 2 2 7 10
XIII- Boucles et Tests

Exemple 2 : somme sur les colonnes d’une matrice.


 Solution 1 : Boucle Solution 2 : Fonction

>M=matrix(sample(1:10, 20, rep=T),5,4) >M=matrix(sample(1:10, 20,


M rep=T),5,4)
[,1] [,2] [,3] [,4]
[1,] 1 4 3 7 >SM=Apply(M,2,sum)
[2,] 1 8 3 5
[3,] 10 5 5 4
[4,] 2 6 5 2
[5,] 3 9 2 10
>SM=numeric(length(ncol(M)))
>for(j in 1:ncol(M)){SM[j]=sum(M[,j])}
[1] 17 32 18 28
XIV- Ecrire un programme R

Un programme R est une série d’instructions sauvées dans un fichier


texte (.txt ou .R), paramétrables à l’aide de vecteurs. Le programme
est rappelé dans R en utilisant la fonction source().

 Utile lorsqu’on veut exécuter une même tache plusieurs fois


IV- Ecrire un programme R

Exemple : On veut exécuter le même graphique plusieurs fois, pour 3


espèces d’oiseaux différentes, contenues dans 3 fichiers différents

Solution 1 : directe Solution 2 : écriture d’un programme


>layout(matrix(1:3,3,1)) #partitionne le R stocké dans "mybirds.txt«
#graphe : idem split.screen(c(3,1)) -----------------------------------
>data=read.table("Swal.txt") layout(matrix(1:3,3,1))

v1 2 4 5 8 10 v2 1 1 2 1 1
file=c("Swal.txt","Wren.txt", "Dunn.txt ")
>barplot(data$V2, data$V1) species=c("swallow", "wren", "dunnock")
>title("Swallow") for (i in 1:length(species))
{
>data=read.table("Wren.txt")
data=read.table( file[i])
v1 2 3 4 5 6 v2 1 1 1 1 1 1 barplot(data$V2,data$V1)
>barplot(data$V2,data$V1) title(species[i])
>title("Wren") }
---------------------------------------------------
>data=read.table("Dunn.txt")
>source("mybirds.txt")
v1 4 5 8 10 v2 2 2 1 1 NB : Les noms de fichier et d’espèce sont
>barplot(data$V2,data$V1) les paramètres du programme., mais ils
sont fixes. Ils sont stockés dans des
>title("Dunnock") vecteurs de mode caractère.
XIV- Ecrire un programme R
XV- Fonctions R

 Si on veut pouvoir utiliser un programme autant que l’on veut en


changeant à loisir ses paramètres, on écrit plutôt une fonction. Les
fonctions écrites auront les mêmes propriétés que celles de R.

 Une fonction est un programme R comportant des paramètres


variables, donnés dans l’instruction function() qui amorce
l’écriture d’une fonction.

 Syntaxe : nom_fonction=fonction(p1,p2,p3,…)
{
}
XV- Fonctions R

 Pour pouvoir être exécutée, une fonction doit être chargée en


mémoire, cela peut se faire de plusieurs façons:
 Entrer les lignes au clavier,
 les copier /coller à partir d’un éditeur
 Enregistrer la fonction dans un fichier ascii et la charger par
la commande source()

 Si on souhaite que la fonction soit chargée au démarrage, on peut


l’enregistrer dans un fichier avec l’extension .Rdata qui sera chargé
en mémoire s’il est localisé dans le répertoire de travail de
démarrage ( getwd())
XV- Fonctions R

Solution 3: Ecriture d’une fonction (myfun) stockée dans "myfun.txt"


myfun=function(S,F)
{
data=read.table( F)
barplot(data$V2,data$V1)
title(S)
}
>layout(matrix(1:3,3,1))
>source("myfun.txt")
>myfun("swallow", "Swal.txt")
>myfun("wren", "Wren.txt")
>myfun("dunnock", "Dunn.txt")
XV- Fonctions R

 Il y a deux manières de spécifier les paramètres d’une


fonction fonc=function(p1,p2,p3):
- par leur position: fonc(x,y,z) (~fonc(p1=x,p2=y,p3=z);

- par leur nom: fonc(p2=y,p1=x,p3=z);

 On peut définir des paramètres par défaut:


fonc=function(p1=1:2,p2=c(T,F),p3=c("1", "3")).

 print() affiche le contenu d ’un objet dans une fonction


XV- Fonctions R

• Utilisation de print • Utilisation classique

>msd(1:10) msd=function(x)
>carre=function(x){print(x*x)} {moyenne=mean(x)
>carre(3) etype=sd(x)
print(c(moyenne,etype))}
[1] 9 [1] 5.500000 3.027650

• Arguments par défaut :


msd=function(x=1:10)
{moyenne=mean(x)
etype=sd(x)
print(c(moyenne,etype)) }
>msd()
[1] 5.500000 3.027650
>msd(1:100)
[1] 50.50000 29.01149
XVI- Fonctions mathématiques de base
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
XVI- Fonctions mathématiques de base
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

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
XVI- Fonctions mathématiques de base

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 mais avec les éléments
dupliqués supprimés
table() Retourne un tableau des
effectifs des différentes
valeurs de x
subset() Retourne une sélection de x en
fonction de critères
sample(x,size) Ré-échantillonnage aléatoire et
sans remise de size éléments
dans x

Vous aimerez peut-être aussi