Boucles et Tests For( in ) { } While( ) { } Les exécutions conditionnelles (if.. else) peuvent être évitées avec des indexations logiques. Exemples: y=numeric(length(x)); for(i in 1:length(x)) {if(x[i]==b)y[i]=0 else y[i]=1} Peut être remplacé par: y[x==b]=0; y[x!=b]=1; Les fonctions du type apply(),évitent d’écrire des boucles.
Boucles et exécutions conditionnelles Plusieurs commandes entre accolades: {expr;… ;expr n} if(expr1) expr2 else expr3 Avec pour expr1 une expression de type logique,
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(& et &&) OR(I et II)
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 x=1:10 if(x<5) y=1 else y=2 Warning message: the condition has length > 1 and only the first element will be used in: if (x < 5) y = 1 else y = 2 y; [1] 1
Suite: ifelse(condition, a,b) ifelse(x<5,1,2) [1] y=ifelse(x<5,1,2);y; [1]
For(valeur in expr1) expr2 Valeur est la variable de la boucle Expr1 est une expression de la forme 1:20 Exemples:
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
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]
Distributions de probabilités classiques shape,scale gammaGamma rate expExponentie lle df,ncp chisqChi-Deux location, scale cauchyCauchy size,prob nbinomBinomiale négative size,prob binomBinomiale shape1,shape2,ncp beta Arguments additionnels Noms sous Rdistribution s
Distributions de probabilités classiques suite Arguments additionnels Noms sous Rdistributions M,nwilcoxWilcoxon shape,scaleweibullWeibull min,maxunifUniforme df,ncptT de student lambdapoisPoisson mean,sdnormNormale meanlog,sdloglnormLog-normale n,m,khyperHypergéométrique probgeomGéométrique
Fonctions mathématiques de base Ecart-type des éléments de xsd(x) Matrice de corrélation si x est une matrice ou un data frame cor(x) Variance des éléments de x(calculée sur n-1) matrice des var et cov si x est une matrice var(x) ou cov(x) Médiane des éléments de xmedian(x) Moyenne des éléments de xmean(x) Idem que c(min,max)range(x) Retourne l’indice du minimum des éléments de xwhich.min(x) Retourne l’indice du maximum des éléments de xwhich.max(x) Maximum, minimum des éléments de xmax(x), min(x) Produit des éléments de xprod(x) Somme des éléments de x sum(x)
Autres fonctions Retourne un vecteur de meme longueur que x contenant les éléments de x qui sont dans y match(x,y) Idem pour produit, minimum, maximumcumprod(), cummin(),cummax() Un vecteur dont le ieme élément est la somme de x[1]à x[i] cumsum(x) Un vecteur dont le iéme élément est le minimum entre x[i] et y[i] pmin(x,y,…) Centre et réduit les donnéesscale(x) Range les éléments de xrank(x) Trie les éléments de x dans l’ordre ascendant sort(x) Inverse l’ordre des éléments de xrev(x) Arrondit les éléments de x à n chiffres après la virgule round(x,n)
encore… Ré-échantillonnage aléatoire et sans remise de size éléments dans x sample(x,size) Retourne une selection de x en fonction de critères subset() Retourne un tableau des effectifs des différentes valeurs de x table() Si x est un vecteur ou un data frame, retourne un objet similaire mais avec les éléments duppliqués supprimés unique() Retourne un message d’erreur si x contient au moins un NA na.fail() Supprime les observations avec données manquantes na.omit() Coefficient binomial Cnkchoose(n,k)
La fonction which() which(x, arr.ind = FALSE) x: un vecteur ou tableau logique arr.ind: logique est-ce que les indices du tableau doivent être retournés lorsque x est un tableau? Exemple: m = matrix(12:24,3,4) ;m [,1] [,2] [,3] [,4] [1,] [2,] [3,]
which(m % 3 == 0) [1] which(m % 3 == 0, arr.ind=TRUE) row col [1,] 1 1 [2,] 1 2 [3,] 1 3 [4,] 1 4