Chapitre 6. Programmation en R
303
Ï
Fiche de TP
Programmation de fonctions et programmation R orient´ ee objet
Avant mˆ eme de lire les travaux pratiques propos´ es ci-dessous, il est fortement conseill´ e de reprendre ceux propos´ es dans les chapitres pr´ ec´ edents (et
notamment celui sur « les graphiques avanc´ es ») afin de r´ eorganiser leurs solutions en autant de fonctions que n´ ecessaire.
A- Gestion d’un compte bancaire
L’objectif est de cr´ eer trois fonctions minimalistes permettant de g´ erer des
comptes bancaires. Les comptes seront stock´ es dans des objets data.frame
tous nomm´ es compte et sauvergard´ es dans autant de fichiers .RData diff´ erents.
Tous ces fichiers seront localis´ es dans un mˆ eme r´ epertoire dont le nom (ainsi
que son chemin d’acc` es) est suppos´ e avoir ´ et´ e enregistr´ e dans la variable R
.repertoire.comptes et accessible dans toutes les fonctions `
a d´ evelopper.
6.1- L’instruction file.path(.repertoire.comptes,paste(nom,".RData",
sep="")) fournit le chemin du fichier associ´ e au compte nom. Cr´ eez la
fonction chemin.compte(), avec pour unique param` etre formel le param` etre nom (repr´ esentant le nom du compte ` a traiter), permettant de retourner le chemin complet du fichier (contenant l’objet compte de classe
data.frame) ayant pour extension .RData.
6.2- Sachant que factor(levels=c("D´ ebit","Cr´ edit")), numeric(0) et
character(0) fournissent respectivement des vecteurs vides dont les
types sont explicites, quelle instruction g´ en` ere une matrice de donn´ ees
vide contenant les champs pr´ ed´ efinis somme, mode, date et remarque ?
Cr´ eez alors la fonction compte() (` a ne pas confondre avec la variable
compte appel´ ee dans son corps) avec, pour param` etre unique, le param` etre nom qui permet de cr´ eer un nouveau compte.
6.3- Cr´ eez alors les fonctions d´ ebite() et cr´ edite() permettant respectivement de d´ ebiter et de cr´ editer une somme somme (deuxi` eme param` etre)
dans le compte nomm´ e nom (premier param` etre). Le troisi` eme param` etre
est un commentaire quelconque ` a placer ´ eventuellement dans le param` etre
remarque. Un quatri` eme param` etre pourra repr´ esenter la date avec pour
valeur par d´ efaut format(Sys.time(),"%d/%m/%Y") (c’est-` a-dire la date
de la saisie). Pensez ` a utiliser les fonctions load() et save() pour charger et sauvegarder la variable compte ` a l’int´ erieur du corps de chaque
fonction.
6.4- Si compte d´ esigne la matrice de donn´ ees contenant les informations sur le
compte, que renvoie sum(compte[compte$mode=="Cr´ edit","somme"]) ?
303
Ï
Fiche de TP
Programmation de fonctions et programmation R orient´ ee objet
Avant mˆ eme de lire les travaux pratiques propos´ es ci-dessous, il est fortement conseill´ e de reprendre ceux propos´ es dans les chapitres pr´ ec´ edents (et
notamment celui sur « les graphiques avanc´ es ») afin de r´ eorganiser leurs solutions en autant de fonctions que n´ ecessaire.
A- Gestion d’un compte bancaire
L’objectif est de cr´ eer trois fonctions minimalistes permettant de g´ erer des
comptes bancaires. Les comptes seront stock´ es dans des objets data.frame
tous nomm´ es compte et sauvergard´ es dans autant de fichiers .RData diff´ erents.
Tous ces fichiers seront localis´ es dans un mˆ eme r´ epertoire dont le nom (ainsi
que son chemin d’acc` es) est suppos´ e avoir ´ et´ e enregistr´ e dans la variable R
.repertoire.comptes et accessible dans toutes les fonctions `
a d´ evelopper.
6.1- L’instruction file.path(.repertoire.comptes,paste(nom,".RData",
sep="")) fournit le chemin du fichier associ´ e au compte nom. Cr´ eez la
fonction chemin.compte(), avec pour unique param` etre formel le param` etre nom (repr´ esentant le nom du compte ` a traiter), permettant de retourner le chemin complet du fichier (contenant l’objet compte de classe
data.frame) ayant pour extension .RData.
6.2- Sachant que factor(levels=c("D´ ebit","Cr´ edit")), numeric(0) et
character(0) fournissent respectivement des vecteurs vides dont les
types sont explicites, quelle instruction g´ en` ere une matrice de donn´ ees
vide contenant les champs pr´ ed´ efinis somme, mode, date et remarque ?
Cr´ eez alors la fonction compte() (` a ne pas confondre avec la variable
compte appel´ ee dans son corps) avec, pour param` etre unique, le param` etre nom qui permet de cr´ eer un nouveau compte.
6.3- Cr´ eez alors les fonctions d´ ebite() et cr´ edite() permettant respectivement de d´ ebiter et de cr´ editer une somme somme (deuxi` eme param` etre)
dans le compte nomm´ e nom (premier param` etre). Le troisi` eme param` etre
est un commentaire quelconque ` a placer ´ eventuellement dans le param` etre
remarque. Un quatri` eme param` etre pourra repr´ esenter la date avec pour
valeur par d´ efaut format(Sys.time(),"%d/%m/%Y") (c’est-` a-dire la date
de la saisie). Pensez ` a utiliser les fonctions load() et save() pour charger et sauvegarder la variable compte ` a l’int´ erieur du corps de chaque
fonction.
6.4- Si compte d´ esigne la matrice de donn´ ees contenant les informations sur le
compte, que renvoie sum(compte[compte$mode=="Cr´ edit","somme"]) ?
