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)