Cours 7 Programmation de base
Boucles et Tests for( in ) { } while( ) { } Exemple: x=rep(5,0) for (i in 1:5) x[i]=2*i+1 Les fonctions du type apply(),replicate() évitent d’écrire des boucles.
Boucles et exécutions conditionnelles if(expr1) expr2 else expr3 avec pour expr1 une expression de type logique, Remarques: Plusieurs commandes entre accolades: {expr;… ;expr n} Les exécutions conditionnelles (if.. else) peuvent quelquefois être remplacées efficacement par des indexations logiques.
Exemple: y=numeric(length(x)); for(i in 1:length(x)) {if(x[i]==b)y[i]=0 else y[i]=1} Remarque: L'exemple précédent peut être remplacé par: y[x==b]=0; y[x!=b]=1;
Des Expressions de type logique utilisant des opérateurs relationnels: x y;x =y;x==y; x!=y ou bien (et) les opérateurs NOT ! AND & OR I
if(expr1) expr2 else expr3 Le résultat de cette commande est expr2 si expr1 vaut TRUE et expr3 si expr1 vaut FALSE Il existe une version vectorisée de cette commande: ifelse(condition, a,b)
exemples x=1; if(x<5) y=1 else y=2 y; [1] 1 x=1:10 if(x<5) y=1 else y=2
Suite: ifelse(condition, a,b) ifelse(x<5,1,2) [1] y=ifelse(x<5,1,2);y; [1]
repeat expr while(condition) La commande break peut être utilisée pour terminer une boucle quelconque, et c’est le seul moyen pour interrompre une boucle avec repeat La commande next peut être utilisée pour pour interrompre une boucle particulière et passer aux instructions suivant next
Programmer avec R ● Point fort:la programmation d'une suite d'analyses qui seront exécutées successivement ● Un programme en R sera écrit dans un fichier ascii et sauvegardé avec l'extension.R ● Exemple: tracer le même graphe pour 3 espèces d'oiseaux
Programme 1 ● layout(matrix(1:3,3,1)) ● data=read.table(« swal.dat ») ● plot(data$v1,data$v2, type= »l ») ● Title(« swallow ») ● data=read.table(« wren.dat ») ● plot(data$v1,data$v2, type= »l ») ● Title(« wren ») ● data=read.table(« dunn.dat ») ● plot(data$v1,data$v2, type= »l ») ● Title(« dunn »)...
Programme 2:les noms de fichier et d'especes sont utilises comme des variables ● layout(matrix(1:3,3,1)) ● species=c(«swallow »,»wren »,»dunnock») ● file=c(« swal.dat »,»wren.dat »,»dunn.dat ») ● for(i in 1:length(species)) {data=read.table(file[i]) plot(data$v1,data$v2,type= »l ») title(species[i]) }
Les fonctions On peut écrire ses propres fonctions: 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, ou 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, il peut les enregistrer dans un workspace avec l’extension.Rdata qui sera chargé en mémoire s’il est localisé dans le répertoire de travail de démarrage getwd(): indique le repertoire de travail
Exemple de fonction carre=function(x){print(x*x)} carre(3);9 Il y a deux manières de spécifier les arguments à une fonction: par leur position par leur nom Exemple: fonc=function(arg1,arg2,arg3) fonc(x,y,z); fonc(arg2=y,arg1=x,arg3=z);
print() pour afficher le contenu d ’un objet dans une fonction Arguments par défaut Exemple: Moy.et.etype=function(x=1:10) {moyenne=mean(x); etype=sd(x); print(c(moyenne,etype)); } moy.et.etype() [1] moy.et.etype(1:100) [1]
Programme 3 myfun=function(S,F) { data=read.table(F) plot(data$v1,data$v2,type= »l ») title(S) }; layout(matrix(1:3,3,1) myfun(« swallow », »sawl.dat »)...
Les fonctions On peut écrire ses propres fonctions: 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, ou 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 les enregistrer dans un workspace avec l’extension.Rdata qui sera chargé en mémoire s’il est localisé dans le répertoire de travail de démarrage getwd(): indique le repertoire de travail
nom=function(arg1,arg2,…) expression ● Où expression peut être un groupe d’expressions rassemblées entre accolades: nom=function(arg1,arg2,…) {expression1, expression2, expression3,… }
Fonctions (suite) print() pour afficher le contenu d ’un objet dans une fonction Le résultat de la fonction sera en général la dernière valeur calculée. Un appel de fonction est fait de la façon suivante: nom(arg1,arg2,…)
Exemples carre=function(x){print(x*x)} carre(3);9 Il y a deux manières de spécifier les arguments à une fonction: par leur position par leur nom fonc=function(arg1,arg2,arg3) fonc(x,y,z); fonc(arg2=y,arg1=x,arg3=z);
Arguments par défaut Exemple: moy.et.etype=function(x=1:10) {moyenne=mean(x); etype=sd(x); print(c(moyenne,etype)); } moy.et.etype() [1] moy.et.etype(1:100) [1]