Nous allons décortiquer l'exemple cité dans la section précédente :
voir programme R et rapport html
obtenu.
Le début du programme R définit le tableau de données utilisé :
# initialisation des donnees
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)
rownames(tab) = c("Alfred", "Berthe", "Carole", "Didier", "Eric")
tab$moyenne = (tab$math + tab$anglais)/2
tab$avis = as.factor(ifelse(tab$moyenne<10,"recale","admis"))
Pour structurer le rapport, on utilise la fonction HTML.title
qui permet de définir des titres de différents niveaux : niveau 1 (HR=1)
pour le titre principal, niveau 2 (HR=2) pour les sections principales,
niveau 3 pour les sous-sections...
# ajout des titres
HTMLInitFile(outdir=getwd(),filename=nomfichier,useLaTeX=FALSE,useGrid=FALSE)
HTML.title("Un premier rapport", HR=1)
HTML.title("1) Statistiques brutes", HR=2)
HTML.title("1.1) Etude de la note finale", HR=3)
HTML.title("1.2) Etude de l'avis", HR=3)
HTML.title("2) Statistiques avec présentation amélioree", HR=2)
HTML.title("2.1) Utilisation de la fonction paste", HR=3)
HTML.title("2.2) Mise en forme avec des matrices", HR=3)
HTML.title("2.3) Utilisation de balises HTML", HR=3)
HTML.title("3) Graphiques", HR=2)
HTML.title("3.1) Boite à moustaches de la note finale", HR=3)
HTML.title("3.2) Graphe en camembert des avis", HR=3)
HTML.title("3.3) Regroupement de 2 graphiques", HR=3)
HTMLEndFile()
La fonction HTML, appliquée à un nombre ou à un texte, affiche celui-ci
dans un nouveau paragraphe.
Dans la section 1.1 où cette fonction est utilisée quatre fois, il y aura donc quatre paragraphes, ce qui n'est
pas très élégant pour la mise en forme.
Pour y remédier, on peut utiliser la fonction paste qui dans la section 2.2
regroupe textes et nombres dans deux variables textuelles (nommées phrase1
et phrase2) : il n'y aura donc plus que deux paragraphes.
HTML.title("1.1) Etude de la note finale", HR=3)
HTML("moyenne (de la note finale) : ")
HTML(mean(tab$moyenne,na.rm=T))
HTML("ecart-type (de la note finale) : ")
HTML(sd(tab$moyenne,na.rm=T))
HTML.title("2.1) Utilisation de la fonction paste", HR=3)
phrase1 = paste("La moyenne vaut", mean(tab$moyenne,na.rm=T), ".")
HTML(phrase1)
phrase2 = paste("L'ecart-type vaut", sd(tab$moyenne,na.rm=T), ".")
HTML(phrase2)
La fonction HTML peut être appliquée à d'autres objets que des nombres
ou des textes : vecteurs, matrices, dataframes...
Mais la mise en page est nettement plus performante pour certains objets,
ce qui conduit ici à transformer le vecteur summary(tab$avis)
en matrice à une ligne.
HTML.title("1.2) Etude de l'avis", HR=3)
HTML(summary(tab$avis))
HTML.title("2.2) Mise en forme avec des matrices", HR=3)
mat = matrix(summary(tab$avis), nrow=1)
colnames(mat) = names(summary(tab$avis))
HTML(mat)
La création de graphiques se fait en 2 temps : création de fichiers
graphiques indépendents du rapport html, puis insertion dans
le rapport d'un lien vers ces fichiers graphiques avec la fonction
HTMLInsertGraph.
HTML.title("3.1) Boite à moustaches de la note finale", HR=3)
# creation d'un fichier graphique nommé notefinale.PNG
png("notefinale.PNG")
boxplot(tab$moyenne, main="note finale")
dev.off()
# insertion du fichier graphique dans le rapport html
HTMLInsertGraph("notefinale.PNG")
HTML.title("3.2) Graphe en camembert des avis", HR=3)
# creation d'un fichier graphique nommé avis.PNG
png("avis.PNG")
pie(table(tab$avis),main="avis")
dev.off()
# insertion du fichier graphique dans le rapport html
HTMLInsertGraph("avis.PNG")
A la fin, 4 fichiers sont ici créés par le programme R (automatiser.R) :
le fichier html (rapport1.html)
et trois fichiers graphiques (notefinale.PNG,
avis.PNG, groupe.PNG).
Si vous souhaitez mettre en ligne ce rapport sur un site web, il faudra
y recopier ces 4 fichiers ainsi que la feuille de styles (R2HTML.css)
introduite dans la section précédente.