Nous allons décortiquer l'exemple cité dans la section précédente :
voir fichier avant transformation (format writer ou pdf)
et fichier après transformation (format writer ou pdf).
Les morceaux de code R introduits dans le fichier Writer initial sont appelés "chunks".
Ils sont délimités avec des symboles spéciaux : <<...>>= en indique le début et @ la fin.
Dans le premier chunk permettant de définir le tableau de données (nommé tab),
l'option echo=FALSE indique que les commandes R ne seront pas recopiées dans le fichier Writer final.
L'option results=hide, quant à elle, précise que les résultats de ces commandes R ne seront pas
non plus recopiés dans le fichier Writer final.
# chunk d'initialisation des donnees
<<echo=FALSE,results=hide>>=
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"))
@
Si on souhaite afficher les commandes R et leurs résultats, on
affectera la valeur TRUE à l'option echo
et la valeur verbatim à l'option results.
# chunk de statistiques brutes (affichées comme dans la console R)
<<echo=TRUE,results=verbatim>>=
summary(tab$moyenne)
summary(tab$avis)
@
On peut améliorer la présentation des statistiques en les mettant dans des matrices,
puis en affichant ces matrices avec la fonction odfTable :
# chunk d'affichage de tables (matrices ou dataframes)
<<echo=FALSE,results=xml>>=
mat = matrix(summary(tab$avis), nrow=1)
colnames(mat) = names(summary(tab$avis))
odfTable(mat,useRowNames=F)
@
Il est aussi possible, pour améliorer la présentation, de glisser
des calculs au milieu d'un texte Writer :
# utilisation de S-expressions
La moyenne (de la note finale) est \Sexpr{mean(tab$moyenne,na.rm=T)}
et l'écart-type (de la note finale) \Sexpr{sd(tab$moyenne,na.rm=T)}.
Les graphiques sont réalisés avec l'option fig=TRUE.
# chunk avec un graphique
<<echo=FALSE,results=hide,fig=TRUE>>=
boxplot(tab$moyenne, main="note finale")
@
# chunk avec plusieurs graphiques : utilisez par(mfrow=...)
<<echo=FALSE,results=hide,fig=TRUE>>=
par(mfrow=c(1,2)) # 2 graphiques sur 1 ligne et 2 colonnes
boxplot(tab$moyenne, main="note finale")
pie(table(tab$avis),main="avis")
par(mfrow=c(1,1)) # pour les prochains graphiques
@
Pour plus d'informations sur odfWeave, je vous suggère de faire
un tour sur le site d'enseignement [PBIL] et d'y chercher "odfWeave"
avec la zone de texte prévue à cet effet.