Quelques rappels :
- Le "." est un opérateur permettant à un objet d'appeler une fonction. Il ne peut plus être utilisé dans un nom de variable
- On essaye au maximum de généraliser les options des fonctions à toutes les fonctions. Par exemple, data=dn (de la regression linéaire) doit être utilisable par 'mean', par 't.test', ...
- Le tilde '~' signifie 'en fonction de'. Son utilisation doit se généraliser.
- La majuscule en début de mot est réservé pour les types. 'Toto' est un type (donc une classe), 'toto' est une variable.
Quelques exemples de code R++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /*****************/ /* types simples */ /*****************/ /* get et set */ majeur <- TRUE age <- 18 age taille <- 1.83 nom <- "Pierre" metier <- "Cadre" in c("Agriculteur","Patron","Cadre","Ouvrier","Autres") metier <- "Agriculteur" niveauDEtude <- "L1" in c("L1"<"L2"<"L3"<"M1"<"M2") /* Ne doit PAS marcher */ ## majeur <- 18 ## metier <- "Paron" ## agge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 /* quelques méthodes */ type(nom) type(age) isEqual(age,18) /* expressions logiques */ b1 AND b2 AND b3 /* Autorisé, evaluation de gauche à droite */ ## b1 AND b2 OR b3 /* non autorisé */ majeur permis <- FALSE majeur AND permis 2==3 /* expressions numeriques */ type(age) age*2 /* chaines de caracters */ chaine <- "dichlorodiphényltrichloroéthane" nbChar(chaine)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 /*****************/ /* types répétés */ /*****************/ /* vecteurs basic */ ages <- (15,12,19) type(ages) /* matrix */ notes <- c( c(1,2), c(3,4), c(5,6) ) /* dataFrame */ age <- c(17,20,19) sexe <- c("Homme","Homme","Femme") bac <- c(FALSE,TRUE,FALSE) dn <- dataFrame(age,sexe,bac) type(dn) ages[3] notes[2,1] dn[2,3] notes[,1] dn2 <- readFile("myData.csv") type(ages) nbCol(dn2) any(dn[,3]) dn[,1]*2 t(dn[,1]) * dn[,1]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 /**************/ /* structures */ /**************/ majeur <- TRUE if(majeur){ salaire <- 1000 }else{ salaire <- 100 } for(nbFrere in c(1,3,5,2,0,3)){ switch(nbFrere){ case(0){cat("Ah ?")} case(1){cat("Cool.")} case(2){cat("Wahou !")} else{("Pauvre maman !!!")} } } while(majeur){ majeur <- FALSE } nbFrere <- 1 repeat{ nbFrere <- nbFrere + 1 }until(nbFrere<5) switchBreak{ case(nbFrere==0){cat("0")} case(nbFrere>=4){cat("Trop !")} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 /*************/ /* fonctions */ /*************/ Integer carre <- function(Integer val x){ return(x^2) } carre(nbFrere) carre(3) Numeric volume <- function(Numeric long, Numeric larg, Numeric haut){ Numeric surface <- function(Numeric longueur, Numeric largeur){ return(longueur*largeur) } return(haut*surface(longeur=long,largeur=larg)) } volume(3,2,4)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 /****************/ /* statistiques */ /****************/ dn <- readCsv("essai.csv") summary(dn) mean(dn$age) sd(dn$age) ### L'option 'data' est disponible pour toutes les commandes (idem pour 'na.rm' et pour d'autres options) mean(age,data=dn) sd(age,data=dn) ### Le ~ signifie "en fonction de". Les instructions ci-dessous donnent la moyenne et l'écart type pour chaque sexe. mean(dn$age~dn$sexe) sd(dn$age~dn$sexe) ### Le ~ peut être multiniveau. Les instructions ci-dessous donnent la moyenne et l'écart type pour chaque sexe et chaque modélité de bac. mean(age~sexe+bac,data=dn) sd(age~sexe+bac,data=dn) ### Les tests statistiques sont unifiés t.test(age~sexe,data=dn) cor.test(age~note,data=dn) chisq.test(mentionTresBien~sexe,data=dn) kruskal.test(age~sexe,data=dn) ### Les modèles sont unifiés ; l'intercept n'est plus optionnel. lm(note~1+age+sexe, data=dn) lme(note~fixe(1+a+b)+random(c+d), data=dn) lme(note~fixe(1)+fixe(a)+fixe(b)+random(c)+random(d), data=dn)
Partager