R2DOCX : Cr?er un document word avec R
Deux possibilit?s pour g?n?rer un document word. Soit avec Knitr et pandoc ou avec R2DOCX.
Pandoc : Convertir un document Markdown vers d'autres formats
Pour plus de d?tails cliquez-ici
La fonction pandoc() est incluse dans le package knitr (version 1.2) permettant de convertir des documents Markdown ? d'autres formats tels que Latex/PDF, HTML et word (.doc, .docx).
Cette fonction permet juste d?ex?cuter de mani?re simple la ligne de commande suivante:
Code R :
FILE <- "example" system(paste0("pandoc -o ", FILE, ".docx ", FILE, ".md"))
Pour le fichier.md, le chemin absolu est necessaire.
Utilisez donc la commande :
Code R :
commande<-paste("pandoc -o ", "myfile.docx ", getwd(), "/myfile.md ", sep="") system(commande)
Pour installer pandoc suivre ce lien
Utilisation simple
Code R :
library(knitr) pandoc('foo.md', format='html') # HTML pandoc('foo.md', format='latex') # LaTeX/PDF pandoc('foo.md', format='docx') # MS Word pandoc('foo.md', format='odt') # OpenDocument
Cr?er un document word avec R2DOCX
R2DOCX permet de cr?er, de mani?re simple, un document word ? partir d'un template ou pas, d'ins?rer des graphiques et des tables.
Une documentation est compl?te est fournie ici
Un exemple est montr? ici
Installation
Compatibilit? R >= 3.0
Code R :
install.packages("devtools") devtools::install_github('R2DOC', 'davidgohel') devtools::install_github('R2DOCX', 'davidgohel')
Pour les utilisateurs de Mac :
Code R :
Sys.setenv(NOAWT=1) #prevents usage of awt.[http://cran.r-project.org/doc/manuals/r-devel/R-admin.html#Java-_0028OS-X_0029] install.packages("devtools") devtools::install_github('R2DOC', 'davidgohel') devtools::install_github('R2DOCX', 'davidgohel')
Les fonctions disponibles
- addPlot pour ajouter un graphique.
- addParagraph pour ajouter un paragraphe de textes
- addTable pour ajouter des tables.
- addHeader pour ajouter des titres.
- addTOC pour ajouter une table des mati?res.
- addPageBreak pour ajouter un saut de page.
- addLineBreak pour ajouter un saut de ligne.
- replaceText pour remplacer du texte.
Votre premier document
Code R :
Sys.setenv(NOAWT=1) #prevents usage of awt - required on Mac library(R2DOCX) # Nom du fichier ? cr?er docx.file <- "document.docx" # Objet Docx ? manipuler doc <- new ("Docx", title = "My example" ) #ajouter une table doc = addTable( doc, iris[1:10,] ) # Ajouter du texte doc <- addParagraph( doc, value = "Hello World!", stylename = "Normal" ) # ajouter un graphique doc = addPlot( doc, function() plot( rnorm(10), rnorm(10) ) , width = 10, height = 8 ) # Ecriture du fichier writeDoc( doc, docx.file )
Cr?er un document word ? partir d'un template
Code R :
# document word ? cr?er docx.file = "document.docx" # Document word ? utiliser comme template template.file = file.path( find.package("R2DOCX"), "templates/TEMPLATE_01.docx", fsep = "/" ) # Cr?er un nouveau objet doc = new("Docx" , title = "My example" , basefile = template.file ) # Dans le document de base, 2 mots cl?s existent- Rempla?ons les doc = replaceText( doc, pattern = "AUTHOR", replacement = "John Doe" ) doc = replaceText( doc, pattern = "DATE", replacement = date() )
Titre principal
Code R :
#Titre principale #************************************** doc = addParagraph( doc, value = "Exemple", stylename = "TitleDoc" ) doc = addPageBreak( doc ) #saut de page
Table des mati?res
Code R :
#Table des mati?re (table of content : TOC) #************************************** #On vous demandera de mettre ? jour la table de mati?res #la pr?mi?re fois que le document sera ouvert doc = addHeader(doc, "Table des mati?res", 1); doc = addTOC(doc) doc = addPageBreak( doc )#saut de page
Ajout de textes (Normal et liste)
Code R :
# Ajout de textes (normal and liste) #************************************** doc = addHeader(doc, "Dataset presentation", 1); #texte normal doc = addParagraph( doc, value = "Dataset 'measured.weights' is set of weights measurements collected on few people before savate training.", stylename = "Normal" ) #liste non ordonn?e texts = c( "Column 'gender' is the subject gender." , "Column 'id' is the unique subject identifier." , "Column 'cat' is the subject weight category." , "Column 'competitor' tells wether or not subject practice competition." , "Column 'day' is the day of measurement." , "Column 'weight' is the measured weight." ) doc = addParagraph( doc, value = texts, stylename = "BulletList" )
Formatage conditionnel du texte
La fonction addParagraph permet d'ajouter simplement du texte comme montr? ci-dessus. Elle peut ?galement ?tre utilis?e pour faire du remplacement de textes et du formatage conditionnel.
Code R :
# template text x = "[animal] eats [food]." # define formatting properties for replacement text ? see chapter "styles" textProp = textProperties( color = "blue" ) replacement.styles = list( animal= textProp, food= textProp ) # define replacement text replacements = list( animal = "donkey", food = "grass" ) doc <- addParagraph( doc, value = x, stylename = "Normal" , replacements = replacements , replacement.styles = replacement.styles )
La fonction textProperties
Code R :
textProperties(color = "black", font.size = 10 , font.weight = "normal", font.style = "normal" , font.family = "Arial" )
color: couleur de la police; font.size: taille en pixel; font.weight : "normal" ou "bold"; font.style: "normal" ou "italic"; font.family: police.
Ajouter une table
Table simple:
Code R :
# Ajouter une table #************************************** # Table utilisee data( measured.weights ) doc = addHeader(doc, "Dataset", 1); doc = addHeader(doc, "Dataset first lines", 2); #Table simple doc = addTable( doc , data = head( measured.weights, n = 10 ) , formats = get.light.formats() ) doc = addLineBreak( doc )#saut de ligne
Renommer les ent?tes de la table:
Avant d'avoir renomm? :
Code R :
doc = addTable( doc, data = weights.summary)
Apr?s avoir renomm? :
Code R :
doc = addTable( doc , data = weights.summary , header.labels = list("id" = "Subject Identifier", "avg.weight" = "Average Weight" , "regularity" = "Regularity", "visit.n" = "Number of visits", "last.day" = "Last visit" ) # columns labels to display )
Table simple personnalis?e avec fusion des lignes :
Dans la table ci-dessous, les lignes sont fusionn?es sur la colonne 'day'. La colonne 'gender' est color?e en fonction du genre.
Code R :
# simple addTable with row merging on 'day' column doc = addHeader(doc, "Dataset last lines", 2); sampledata = tail( measured.weights[ order(measured.weights$day), ], n = 20 ) doc = addTable( doc , data = sampledata , span.columns = c("day") , col.colors = list( "gender" = ifelse( sampledata$gender == "male" , "#00c2ff", "#ffcdd1") ) )
Table personnalis?e avec ent?tes group?es:
Dans cette table les ent?tes ont ?t? renomm?es, des ent?tes group?es sont cr?es, le type des colonnes est pr?cis? (%, entier, caract?re, nombre d?cimal, date). Les valeurs de la colonne "Regularity" ont ?t? color?es en fonction de la valeur (couleur grise si < 0.5 et bleu si >= 0.5).
Code R :
# customized table doc = addHeader(doc, "Dataset summary", 1); doc = addTable( doc , data = weights.summary , header.labels = list("id" = "Subject Identifier", "avg.weight" = "Average Weight" , "regularity" = "Regularity", "visit.n" = "Number of visits", "last.day" = "Last visit" ) # columns labels to display , grouped.cols=list( "id" = "id" , "Summary" = c( "avg.weight", "regularity", "visit.n", "last.day" ) ) # grouped headers line to add before headers line , col.types = list( "id" = "character", "avg.weight" = "double" , "regularity" = "percent", "visit.n" = "integer" , "last.day" = "date" ) # reporting types of each columns , col.fontcolors = list( "regularity" = ifelse( weights.summary$regularity < 0.5 , "gray", "blue") ) # customized font colors for column "regularity" )
Ajouter un graphique
Code R :
# Ajouter un grahique #************************************** doc = addPageBreak( doc ) doc = addHeader(doc, "Graphics", 1); doc = addPlot( doc, function() boxplot(measured.weights$weight ~ measured.weights$id, xlab = "Subjects", ylab = "Weights" , col = "#0088cc", legend = "My boxplot"), width=7, height=7 )
Remplacement de texte
Pour remplacer le mot cl? "AUTHOR", dans le document word, avec "Pearson" :
Code R :
doc = replaceText( doc, "AUTHOR", "Pearson")
Les styles de titres disponibles dans votre document
Code R :
doc <- new("Docx", title = "My example" ) styles( doc ) # [1] "Normal" "Titre1" "Titre2" # [4] "Titre3" "Titre4" "Titre5" # [7] "Titre6" "Titre7" "Titre8" #[10] "Titre9" "Policepardfaut" "TableauNormal" # ... doc <- setHeaderStyle(doc, stylenames = c("Titre1", "Titre2", "Titre3", "Titre4", "Titre5", "Titre6", "Titre7", "Titre8", "Titre9" ) ) doc = addHeader( doc, "title 1", 1 )
Un document word complet
Le script complet utilis? pour cr?e le document word suivant est t?l?chargeable ici : R2DOCX.r
Document word complet
Voir Aussi
R2XLSX : lire, ?crire et formater un document Excel dans R