• Tidak ada hasil yang ditemukan

Génération automatique de documents avec OpenOffice ou LibreOffice

Dalam dokumen Barnier intro R (Halaman 99-103)

R> pdf(file = "out.pdf", width = 9, height = 9, pointsize = 10) R> plot(rnorm(150))

R> dev.off() R>

Il est nécessaire de faire un appel à la fonctiondev.off après génération du graphique pour que le résultat soit bien écrit dans le fichier de sortie (dans le cas contraire on se retrouve avec un fichier vide).

8.3 Génération automatique de documents avec OpenOffice ou Li-breOffice

Les méthodes précédentes permettent d’exporter tableaux et graphiques, mais cette opération reste manuelle, un peu laborieuse et répétitive, et surtout elle ne permet pas de mise à jour facile des documents externes en cas de modification des données analysées ou du code.

R et son extension odfWeave permettent de résoudre en partie ce problème. Le principe de base est d’inclure du code R dans un document de type traitement de texte, et de procéder ensuite au remplacement automatique du code par le résultat sous forme de texte, de tableau ou de figure.

À noter qu’odfWeave n’est pas la seule extension proposant ce type de fonctionnalités, on citera notamment knitr, présentée section 8.4 page 103, plus utilisée et plus versatile. odfWeave a l’avantage de fournir directement en sortie un document au format OpenDocument, mais présente l’inconvénient de devoir saisir le code R dans LibreOffice, sans les facilités d’édition d’un outil spécifique à R, et sans pouvoir exécuter ce code de manière interactive.

8.3.1 Prérequis

odfWeave ne fonctionne qu’avec des documents au format OpenDocument (extension.odt), donc en particulier avec OpenOffice ou LibreOffice mais pas avec Word. L’utilisation d’OpenOffice est cependant très proche de celle de Word, et les documents générés peuvent être ensuite ouverts sous Word pour édition.

L’installation de l’extension se fait de manière tout à fait classique : R> install.packages("odfWeave", dep = TRUE)

Un autre prérequis est de disposer d’applications permettant de compresser et décompresser des fichiers au formatzip. Or ceci n’est pas le cas par défaut sous Windows. Pour les récupérer, téléchargez l’archive à l’adresse suivante :

http://alea.fr.eu.org/public/files/zip.zip

Décompressez-là et placez les deux fichiers qu’elle contient (zip.exe et unzip.exe) dans votre réper-toire système, c’est à dire en général soitc:\windows, soit c:\winnt.

8.3.2 Exemple

Prenons tout de suite un petit exemple. Soit le fichier OpenOffice représenté figure8.1page suivante.

On voit qu’il contient à la fois du texte mis en forme (sous forme de titre notamment) mais aussi des passages plus ésotériques qui ressemblent plutôt à du code R.

Ce code est séparé du reste du texte par les caractères«»=, en haut, et @, en bas.

Créons maintenant un nouveau fichier R dans le même répertoire que notre fichier OpenOffice, et mettons-y le contenu suivant :

100 Exporter les résultats

Figure 8.1 – Exemple de fichier odfWeave

Figure 8.2 – Résultat de l’exemple de la figure8.1

R> library(odfWeave)

R> odfWeave("odfWeave_exemple1.odt", "odfWeave_exemple1_out.odt")

Puis exécutons le tout... Nous devrions alors avoir un nouveau fichier nommé odfWeave_exemple1_out.odt dans notre répertoire de travail. Si on l’ouvre avec OpenOffice, on obtient le résultat indiqué figure8.2de la présente page.

Que constate-t-on ? Le passage contenant du code R a été remplacé par le code R en question, de couleur bleue, et par son résultat, en rouge.

Tout ceci est bien sympathique mais un peu limité. La figure8.3 page suivante, montre un exemple plus complexe, dont le résultat est indiqué figure8.4, page102.

Le premier bloc de code R contient des options entre les séparateurs« et »=. L’option echo=FALSE supprime l’affichage du code R (en bleu) dans le document résultat. L’option results=hide supprime l’affichage du résultat du code (en rouge). Au final, le codelibrary(questionr) est exécuté, mais caché dans le document final.

Dans le deuxième bloc, l’optionresults=xml indique que le résultat du code ne sera pas du simple texte mais un objet déjà au format OpenOffice (en l’occurrence un tableau). Le code lui-même est ensuite assez classique, sauf la dernière instruction odfTable.matrix, qui, appliquée à un objet de type table, questionr

produit le tableau mis en forme dans le document résultat.

Plus loin, on a dans le cours du texte une chaîne\Sexprsum(tab) qui a été remplacée par le résultat du code qu’elle contient.

Enfin, dans le dernier bloc, l’optionfig=TRUE indique que le résultat sera cette fois une image. Et le bloc est bien remplacé par la figure correspondante dans le document final.

8.3. Génération automatique de documents avec OpenOffice ou LibreOffice 101

Figure 8.3 – Un fichier odfWeave un peu plus compliqué

8.3.3 Utilisation

Le principe est donc le suivant : un document OpenOffice classique, avec du texte mis en forme, stylé et structuré de manière tout à fait libre, à l’intérieur duquel se trouve du code R. Ce code est délimité par les caractères«»= (avant le code) et @ (après le code). On peut indiquer des options concernant le bloc de code R entre les caractères« et » de la chaîne ouvrante. Parmi les options possibles les plus importantes sont :

eval siTRUE (par défaut), le bloc de code est exécuté. Sinon il est seulement affiché et ne produit pas de résultat.

echo siTRUE (par défaut), le code R du bloc est affiché dans le document résultat (par défaut en bleu).

SiFALSE, le code est masqué.

results indique le type de résultat renvoyé par le bloc. Si l’option vautverbatim (par défaut), le résultat de la commande est affiché tel quel (par défaut en rouge). Si elle vautxml, le résultat attendu est un objet OpenOffice : c’est l’option qu’on utilisera lorsqu’on fait appel à la fonction odfTable. Si l’option vauthide, le résultat est masqué.

fig siTRUE, indique que le résultat du code est une image.

En résumé, si on souhaite utiliser un bloc pour charger des extensions sans que des traces apparaissent dans le document final, on utilise«echo=FALSE,results=’hide’»=. Si on veut afficher un tableau généré par odfTable, on utilise «echo=FALSE,results=xml»=. Si on souhaite insérer un graphique, on utilise

«echo=FALSE,fig=TRUE»=. Si on souhaite afficher du code R et son résultat « tel quel », on utilise simplement «»=

Pour générer le document résultat, on doit lancer une session R utilisant comme répertoire de travail celui où se trouve le document OpenOffice source, et exécuter les deux commandes suivantes :

R> library(odfWeave)

R> odfWeave("fichier_source.odt", "fichier_resultat.odt")

En pratique, on répartit en général son travail entre différents fichiers R qu’on appelle ensuite dans le document OpenOffice à l’aide de la fonctionsource histoire de limiter le code R dans le document au

102 Exporter les résultats

Figure 8.4 – Résultat de l’exemple de la figure8.3

Dalam dokumen Barnier intro R (Halaman 99-103)

Dokumen terkait