Cette section présente une boîte de dialogue permettant de
saisir un nom de variable (sous forme de zone de liste),
une légende (sous forme de zone de texte) afin de faire un rapport sur
cette variable d'un dataframe (voir écran).
Pour construire le fichier Rpad correspondant (voir code complet)
nous allons repartir du même moule que celui de la section précédente.
# squelette du fichier Rpad
<html>
<head>
<script type="text/javascript" src="gui/Rpad.js"></script>
</head>
<body>
...
<span contenteditable="false">
<input onclick="javascript:rpad.calculatePage()" value="OK" type="button">
</input>
</span>
...
</body>
</html>
La partie précédent le bouton OK est ici utilisée pour initialiser
le tableau de données (nommé tab) et construire le formulaire.
<pre dojoType="Rpad" rpadHideSource="true" rpadRun="init">
# definition du tableau
sexe = c("homme","femme","femme","homme","homme")
math = c(10,12,5,9,13)
anglais = c(5,13,7,12,5)
tab = data.frame(math,anglais,sexe)
</pre>
Le formulaire est construit avec le code html suivant :
variable :
<select name="variable" size="3">
<option>math</option>
<option>anglais</option>
<option>sexe</option>
</select>
<br/>
legende :
<input type="text" name="legende"></input>
<br/>
La balise <select> définit une zone de liste nommée variable.
La balise <option> permet de préciser les choix possibles dans cette zone de liste.
Le code inséré après la partie centrale (<span> ... </span>)
décrit les actions effectuées lorsqu'on clique sur le bouton OK.
Il affiche un résumé de la variable sélectionnée dans la zone de
liste, puis réalise un graphique (boîte à moustaches ou camembert)
dépendant de la nature de cette variable.
# traitement associé au bouton OK
<pre dojoType="Rpad" rpadHideSource="true">
HTMLon()
library(R2HTML)
titre = paste("Etude de la variable", variable)
HTML.title(titre, HR=2)
HTML.title("Resume :", HR=3)
HTML(summary(tab[[variable]]))
HTML.title("Graphique :", HR=3)
if (is.numeric(tab[[variable]])) {
boxplot(tab[[variable]],main=legende)
showgraph()
} else {
pie(table(tab[[variable]]),main=legende)
showgraph()
}
HTMLoff()
</pre>
La fonction showgraph ne semblant plus fonctionner depuis R-2.10,
il faut trouver un palliatif, par exemple employer le code utilisé
avec R2HTML :
# traitement associé au bouton OK
...
if (is.numeric(tab[[variable]])) {
# solution de remplacement utilisant R2HTML
png("graphique.PNG")
boxplot(tab[[variable]],main=legende)
dev.off()
HTMLInsertGraph("graphique.PNG")
} else {
# solution de remplacement utilisant R2HTML
png("graphique.PNG")
pie(table(tab[[variable]]),main=legende)
dev.off()
HTMLInsertGraph("graphique.PNG")
}
...