SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
R fait du LaTeX

     Franck ARNAUD

Groupe d'Utilisateurs de R

 Mercredi 8 février 2011
R & LaTeX – Principe général
●Intérêt : automatiser des opérations répétitives (cahier de
variantes, simulation, évaluation de modèles)
 → Utile d'interfacer R et LaTeX.

Hors-champ : création automatique de discours
●




Méthode :
●

● Les analyses statistiques sont lancées dans R

● Les  résultats sont exportés sous forme de tableaux,
  graphiques, et de textes
● LaTeX les compile → PDF
R & LaTeX – Exemple
R et LaTeX – Schéma d'ensemble
Schéma en trois temps :
●

 ● R crée les objets individuels (tableaux, graphiques, textes)


    Output : fichiers eps, fichiers tex
 ● R crée le code LaTeX qui agence les objets individuels


    Output : fichier(s) tex, qui appelle les précédents
 ● Puis on compile le code LaTeX


    Output : fichier pdf

La cerise sur le gâteau :
●

 ● R lance la compilation et l'affichage du PDF → pénible une fois
R & LateX – Créer un graphique

Export de graphiques au format eps :
●



postscript(file="fig1.eps",horizontal=TRUE,width=8,height=5)
graphe(individu1)
dev.off()

N'hésitez pas à utiliser les possibilités d'agence de graphes :
●

● Simple : par(mrow=c(1,2))

● Plus complexe :

    layout(matrix=c(1,1,2,1,1,3,4,5,6),3,3,byrow=TRUE)
R & LateX – Créer un tableau

Fonction latex du package MASS
●




Mais ça peut s'écrire à la main, si on veut personnaliser :
●

latextab<-function(tab,file)
{
   sink(file)
   cat("begin{table}[!htbp]begin{center}")
   cat("begin{tabular}{c|",rep("c",ncol(tab)),"}n",sep="")
   cat(NULL,colnames(tab),sep=" & ")
   cat(" nhline")
   fff<-function(x) paste( paste(x,collapse=" & "), "")
   cat(apply(cbind(rownames(tab),tab),1,fff),sep="n")
   cat("hlinenend{tabular}end{center}end{table}n")
   sink()
}
R et LaTeX – Exemple de tableau
●Exemple ad hoc :
tab<-matrix(1:8,ncol=4)
colnames(tab)<-paste("Col",1:ncol(tab),sep="")
rownames(tab)<-paste("Ind",1:nrow(tab),sep="")

latextab(tab,file="test.tex")

●Output : le fichier test.tex
begin{table}[!htbp]begin{center}begin{tabular}{c|cccc}
 & Col1 & Col2 & Col3 & Col4
hlineInd1 & 1 & 3 & 5 & 7 
Ind2 & 2 & 4 & 6 & 8 
hline
end{tabular}end{center}end{table}

●On peut ajouter des captions, des labels, etc.
R et LaTeX – Adapter du texte (1)

Le message → fichier pattern.txt :
●

  L'individu %@IDNOM@% a débuté son activité l'année %@ANDEB@%. Il
liquide sa carrière l'année %@ANFIN@% avec %@NTVAL@% trimestres
validés dont %@NTCOT@% trimestres cotisés. La première année, sa pension
vaut %@NIVPENS@%, ce qui représente %@TXREMPLDERN@% de son
dernier salaire.

Ensuite, on remplace chaque identifiant par une valeur
●




●On peut enrichir avec des comportements particuliers →
écriture totalement automatique de rapports
R et LaTeX – Adapter du texte (2)
Transformation du message :
●

transformation<-function(message_init,id_correspondance)
{
    message_trans<-message_init
    debut<-gregexpr(pattern="%@",message_init)[[1]]
    fin<-gregexpr(pattern="@%",message_init)[[1]]
    n<-length(debut)

    for (i in seq_along(debut))
    {
        catch<-substr(message_init,debut[i]+2,fin[i]-1)
        remplac<-as.character(correspondance[3,catch])
        message_trans<-sub(pattern=paste("%@",catch,"@
%",sep=""),rep=remplac,x=message_trans)
    }
    return(message_trans)
}
Fonction globale :
●

R2LaTeX_text<-function(file_message,id_correspondance,file)
{
    message<-readLines(file_message)
    sink(file)
    cat(transformation(message_init=message,
                   id_correspondance=id_correspondance))
    sink()
}
R et LaTeX – Adapter du texte (3)
●La table de correspondance :
correspondance<-read.table(file=stdin(),sep=";",header=TRUE)
IDNOM;SEXE;ANDEB;ANFIN;NTVAL;NTCOT;NIVPENS;TXREMPLDERN;NBENF
Herbert Léonard;H;1965;2005;165;160;1850;60%;NA
Patrick Juvet;H;1972;2008;142;127;1250;65%;2
Wanda        Maria         Ribeiro        Furtado        Tavares           de
Vasconcelos;F;1982;2018;180;150;1800;50%;5
transformation<-function(message_init,id_correspondance)
●On applique la fonction à un individu :
id_indiv<-3
R2LaTeX_text(file_message="pattern.txt",
id_correspondance=id_indiv,
file=paste("Indiv",id_indiv,"resume.tex",sep=""))
●Output :
L'individu Wanda Maria Ribeiro Furtado Tavares de Vasconcelos a débuté son
activité l'année 1982. Il liquide sa carrière l'année 2018 avec 180 trimestres
validés dont 150 trimestres cotisés. La première année, sa pension vaut 1800,
ce qui représente 50% de son dernier salaire.
R & LaTeX – Structure globale
On commence par créer tous les tableaux et graphiques :
●

pps<-function(file) postscript(file=file,horizontal=TRUE,width=8,height=5)
for (i in 1:n_indiv)
{
    individu<-get(paste("indiv",i,sep="")
    pps(file=paste("fig",i,".eps",sep=""))
    graphe(individu)
    dev.off()
    latextab(tableau(individu),file=paste("tab",i,".tex",sep=""))
}


Puis on insère tout ça dans un fichier global :
●

sink("global.tex")
for (i in 1:n_indiv)
{
   cat("section*{Résumé de l'individu ",i,"}n")
   cat("includegraphics{fig",i,"}n",sep="")
   cat("input{tab",i,"}n",sep="")
   cat("clearpagen")
}
sink()
R & LaTeX - Final

Le fichier compilé se compose, outre le préambule, de :

begin{document}
input{global.tex}
end{document}


Il n'est pas inutile de dater les fichier de sortie ou les tableaux :

temps<-Sys.time() #class(temps);?format.POSIXct
jour<-format(temps,"%A %d %B %Y")
heure<-format(temps,"%Hh%Mm%Ss")
cat("Tableau créé le",jour,"à",heure)
R & LaTeX – Ze cherry on ze cake
●   R lance la compilation LaTeX :
     ● Fichier bat :

        set path=C:/Progra~1/MiKTeX~1.9/miktex/bin;C:Progra~1gsgs8.70bin

        latex         --src     -interaction=nonstopmode     -include-directory
        "F:PretImmoLaTeX" %1.tex

        dvips -P pdf "%1.dvi"

        gswin32c.exe     -sPAPERSIZE=a4      -dSAFER     -dBATCH      -dNOPAUSE
        -sDEVICE=pdfwrite -sOutputFile="%1.pdf" -c save pop -f "%1.ps"

    ●   Exécution du fichier bat : system(command=paste("compil.bat",fichier))

●   R ouvre Acrobat Reader :
 system(paste("C:/Progra~1/Adobe/Reader~1.0/Reader/AcroRd32.exe
",fichier,".pdf",sep=""),wait=FALSE)


●   Difficulté : adapter les chemins à l'installation
R & LaTeX – Zi end



Merci de votre attention

          Des questions ?

Contenu connexe

Tendances

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4JLilia Sfaxi
 
Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Laurent BUNIET
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Modern Data Stack France
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Mathieu Saby
 
Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISOmar El Kharki
 
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Mathieu Saby
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaPatrick Allaert
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Mathieu Saby
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
 
Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrigewebreaker
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 

Tendances (19)

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Spark dataframe
Spark dataframeSpark dataframe
Spark dataframe
 
Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGIS
 
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
mix-it 2011
mix-it 2011mix-it 2011
mix-it 2011
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrige
 
Google Developer Group (GDG) Aix-Marseille #1 (27/08/2018)
Google Developer Group (GDG) Aix-Marseille #1 (27/08/2018)Google Developer Group (GDG) Aix-Marseille #1 (27/08/2018)
Google Developer Group (GDG) Aix-Marseille #1 (27/08/2018)
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2
 

En vedette

Cartographie avec igraph sous R (Partie 2)
Cartographie avec igraph sous R (Partie 2)Cartographie avec igraph sous R (Partie 2)
Cartographie avec igraph sous R (Partie 2)Cdiscount
 
Cartographie avec igraph sous R (Partie 1)
Cartographie avec igraph sous R (Partie 1) Cartographie avec igraph sous R (Partie 1)
Cartographie avec igraph sous R (Partie 1) Cdiscount
 
RStudio is good for you
RStudio is good for youRStudio is good for you
RStudio is good for youCdiscount
 
Première approche de cartographie sous R
Première approche de cartographie sous RPremière approche de cartographie sous R
Première approche de cartographie sous RCdiscount
 
Comptabilité Nationale avec R
Comptabilité Nationale avec RComptabilité Nationale avec R
Comptabilité Nationale avec RCdiscount
 
Incorporer du C dans R, créer son package
Incorporer du C dans R, créer son packageIncorporer du C dans R, créer son package
Incorporer du C dans R, créer son packageCdiscount
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 
Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Cdiscount
 
Introduction à la cartographie avec R
Introduction à la cartographie avec RIntroduction à la cartographie avec R
Introduction à la cartographie avec RCdiscount
 
Plutniak maisonobe resto atelier2-network
Plutniak maisonobe resto atelier2-networkPlutniak maisonobe resto atelier2-network
Plutniak maisonobe resto atelier2-networkMarion Maisonobe
 
Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...Laurent Beauguitte
 
Livret protection zh bocage 2014
Livret protection zh bocage 2014Livret protection zh bocage 2014
Livret protection zh bocage 2014SMBS contact
 
Manuel compensation zones humides
Manuel compensation zones humidesManuel compensation zones humides
Manuel compensation zones humidesSMBS contact
 
Rédiger pour être publié ! Conseils pratiques aux scientifiques. Extrait
Rédiger pour être publié ! Conseils pratiques aux scientifiques. ExtraitRédiger pour être publié ! Conseils pratiques aux scientifiques. Extrait
Rédiger pour être publié ! Conseils pratiques aux scientifiques. ExtraitEric Lichtfouse
 
Présentation méthodologie inventaire zones humides et bocage
Présentation méthodologie inventaire zones humides et bocagePrésentation méthodologie inventaire zones humides et bocage
Présentation méthodologie inventaire zones humides et bocageSMBS contact
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RLaurent Beauguitte
 
Boîte à outils Zones Humides AESN
Boîte à outils Zones Humides AESNBoîte à outils Zones Humides AESN
Boîte à outils Zones Humides AESNSMBS contact
 
Rediger pour les revues scientifiques à facteur d'impact
Rediger pour les revues scientifiques à facteur d'impactRediger pour les revues scientifiques à facteur d'impact
Rediger pour les revues scientifiques à facteur d'impactEric Lichtfouse
 
Guide d'identification des plantes des zones humides
Guide d'identification des plantes des zones humidesGuide d'identification des plantes des zones humides
Guide d'identification des plantes des zones humidesSMBS contact
 

En vedette (20)

Cartographie avec igraph sous R (Partie 2)
Cartographie avec igraph sous R (Partie 2)Cartographie avec igraph sous R (Partie 2)
Cartographie avec igraph sous R (Partie 2)
 
Cartographie avec igraph sous R (Partie 1)
Cartographie avec igraph sous R (Partie 1) Cartographie avec igraph sous R (Partie 1)
Cartographie avec igraph sous R (Partie 1)
 
RStudio is good for you
RStudio is good for youRStudio is good for you
RStudio is good for you
 
Première approche de cartographie sous R
Première approche de cartographie sous RPremière approche de cartographie sous R
Première approche de cartographie sous R
 
Comptabilité Nationale avec R
Comptabilité Nationale avec RComptabilité Nationale avec R
Comptabilité Nationale avec R
 
Incorporer du C dans R, créer son package
Incorporer du C dans R, créer son packageIncorporer du C dans R, créer son package
Incorporer du C dans R, créer son package
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)
 
Introduction à la cartographie avec R
Introduction à la cartographie avec RIntroduction à la cartographie avec R
Introduction à la cartographie avec R
 
Plutniak maisonobe resto atelier2-network
Plutniak maisonobe resto atelier2-networkPlutniak maisonobe resto atelier2-network
Plutniak maisonobe resto atelier2-network
 
Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...
 
Latex
LatexLatex
Latex
 
Livret protection zh bocage 2014
Livret protection zh bocage 2014Livret protection zh bocage 2014
Livret protection zh bocage 2014
 
Manuel compensation zones humides
Manuel compensation zones humidesManuel compensation zones humides
Manuel compensation zones humides
 
Rédiger pour être publié ! Conseils pratiques aux scientifiques. Extrait
Rédiger pour être publié ! Conseils pratiques aux scientifiques. ExtraitRédiger pour être publié ! Conseils pratiques aux scientifiques. Extrait
Rédiger pour être publié ! Conseils pratiques aux scientifiques. Extrait
 
Présentation méthodologie inventaire zones humides et bocage
Présentation méthodologie inventaire zones humides et bocagePrésentation méthodologie inventaire zones humides et bocage
Présentation méthodologie inventaire zones humides et bocage
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec R
 
Boîte à outils Zones Humides AESN
Boîte à outils Zones Humides AESNBoîte à outils Zones Humides AESN
Boîte à outils Zones Humides AESN
 
Rediger pour les revues scientifiques à facteur d'impact
Rediger pour les revues scientifiques à facteur d'impactRediger pour les revues scientifiques à facteur d'impact
Rediger pour les revues scientifiques à facteur d'impact
 
Guide d'identification des plantes des zones humides
Guide d'identification des plantes des zones humidesGuide d'identification des plantes des zones humides
Guide d'identification des plantes des zones humides
 

Similaire à R fait du la tex

Mat lab1
Mat lab1Mat lab1
Mat lab1fouadDD
 
Présentation Logiciel R.pptx
Présentation Logiciel R.pptxPrésentation Logiciel R.pptx
Présentation Logiciel R.pptxssusera0d0e81
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreducePatrick Bury
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .NetYann Schwartz
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer Alexandru Radovici
 
Ateliers numériques du LabexMed : LaTeX appliqué aux SHS
Ateliers numériques du LabexMed : LaTeX appliqué aux SHSAteliers numériques du LabexMed : LaTeX appliqué aux SHS
Ateliers numériques du LabexMed : LaTeX appliqué aux SHSPhonothèque MMSH
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreducePatrick Bury
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Cours d’introduction à LaTeX
Cours d’introduction à LaTeXCours d’introduction à LaTeX
Cours d’introduction à LaTeXAdrien Barbaresi
 
Cours d’approfondissement de LaTeX (intermédiaire-avancé)
Cours d’approfondissement de LaTeX (intermédiaire-avancé)Cours d’approfondissement de LaTeX (intermédiaire-avancé)
Cours d’approfondissement de LaTeX (intermédiaire-avancé)Adrien Barbaresi
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScriptHabib Ayad
 

Similaire à R fait du la tex (20)

Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
 
Présentation Logiciel R.pptx
Présentation Logiciel R.pptxPrésentation Logiciel R.pptx
Présentation Logiciel R.pptx
 
intro_latex.pdf
intro_latex.pdfintro_latex.pdf
intro_latex.pdf
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreduce
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
INF355_Lecon2.pdf
INF355_Lecon2.pdfINF355_Lecon2.pdf
INF355_Lecon2.pdf
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .Net
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
Ateliers numériques du LabexMed : LaTeX appliqué aux SHS
Ateliers numériques du LabexMed : LaTeX appliqué aux SHSAteliers numériques du LabexMed : LaTeX appliqué aux SHS
Ateliers numériques du LabexMed : LaTeX appliqué aux SHS
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreduce
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
Une Introduction à R
Une Introduction à RUne Introduction à R
Une Introduction à R
 
Cours d’introduction à LaTeX
Cours d’introduction à LaTeXCours d’introduction à LaTeX
Cours d’introduction à LaTeX
 
Cours d’approfondissement de LaTeX (intermédiaire-avancé)
Cours d’approfondissement de LaTeX (intermédiaire-avancé)Cours d’approfondissement de LaTeX (intermédiaire-avancé)
Cours d’approfondissement de LaTeX (intermédiaire-avancé)
 
4 si ds1 (algo)
4 si   ds1 (algo)4 si   ds1 (algo)
4 si ds1 (algo)
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
 

Plus de Cdiscount

Dataiku r users group v2
Dataiku   r users group v2Dataiku   r users group v2
Dataiku r users group v2Cdiscount
 
Paris2012 session4
Paris2012 session4Paris2012 session4
Paris2012 session4Cdiscount
 
Paris2012 session3b
Paris2012 session3bParis2012 session3b
Paris2012 session3bCdiscount
 
Scm prix blé_2012_11_06
Scm prix blé_2012_11_06Scm prix blé_2012_11_06
Scm prix blé_2012_11_06Cdiscount
 
Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06Cdiscount
 
State Space Model
State Space ModelState Space Model
State Space ModelCdiscount
 
Paris2012 session2
Paris2012 session2Paris2012 session2
Paris2012 session2Cdiscount
 
Paris2012 session1
Paris2012 session1Paris2012 session1
Paris2012 session1Cdiscount
 
Prévisions trafic aérien
Prévisions trafic aérienPrévisions trafic aérien
Prévisions trafic aérienCdiscount
 
Robust sequentiel learning
Robust sequentiel learningRobust sequentiel learning
Robust sequentiel learningCdiscount
 
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...Cdiscount
 
Prévision de consommation électrique avec adaptive GAM
Prévision de consommation électrique avec adaptive GAMPrévision de consommation électrique avec adaptive GAM
Prévision de consommation électrique avec adaptive GAMCdiscount
 
Forecasting GDP profile with an application to French Business Surveys
Forecasting GDP profile with an application to French Business SurveysForecasting GDP profile with an application to French Business Surveys
Forecasting GDP profile with an application to French Business SurveysCdiscount
 
Prediction in dynamic Graphs
Prediction in dynamic GraphsPrediction in dynamic Graphs
Prediction in dynamic GraphsCdiscount
 

Plus de Cdiscount (17)

Gur1009
Gur1009Gur1009
Gur1009
 
Dataiku r users group v2
Dataiku   r users group v2Dataiku   r users group v2
Dataiku r users group v2
 
Paris2012 session4
Paris2012 session4Paris2012 session4
Paris2012 session4
 
Paris2012 session3b
Paris2012 session3bParis2012 session3b
Paris2012 session3b
 
Scm prix blé_2012_11_06
Scm prix blé_2012_11_06Scm prix blé_2012_11_06
Scm prix blé_2012_11_06
 
Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06Scm indicateurs prospectifs_2012_11_06
Scm indicateurs prospectifs_2012_11_06
 
Scm risques
Scm risquesScm risques
Scm risques
 
State Space Model
State Space ModelState Space Model
State Space Model
 
Paris2012 session2
Paris2012 session2Paris2012 session2
Paris2012 session2
 
Paris2012 session1
Paris2012 session1Paris2012 session1
Paris2012 session1
 
HADOOP + R
HADOOP + RHADOOP + R
HADOOP + R
 
Prévisions trafic aérien
Prévisions trafic aérienPrévisions trafic aérien
Prévisions trafic aérien
 
Robust sequentiel learning
Robust sequentiel learningRobust sequentiel learning
Robust sequentiel learning
 
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...
Prediction of Quantiles by Statistical Learning and Application to GDP Foreca...
 
Prévision de consommation électrique avec adaptive GAM
Prévision de consommation électrique avec adaptive GAMPrévision de consommation électrique avec adaptive GAM
Prévision de consommation électrique avec adaptive GAM
 
Forecasting GDP profile with an application to French Business Surveys
Forecasting GDP profile with an application to French Business SurveysForecasting GDP profile with an application to French Business Surveys
Forecasting GDP profile with an application to French Business Surveys
 
Prediction in dynamic Graphs
Prediction in dynamic GraphsPrediction in dynamic Graphs
Prediction in dynamic Graphs
 

R fait du la tex

  • 1. R fait du LaTeX Franck ARNAUD Groupe d'Utilisateurs de R Mercredi 8 février 2011
  • 2. R & LaTeX – Principe général ●Intérêt : automatiser des opérations répétitives (cahier de variantes, simulation, évaluation de modèles) → Utile d'interfacer R et LaTeX. Hors-champ : création automatique de discours ● Méthode : ● ● Les analyses statistiques sont lancées dans R ● Les résultats sont exportés sous forme de tableaux, graphiques, et de textes ● LaTeX les compile → PDF
  • 3. R & LaTeX – Exemple
  • 4. R et LaTeX – Schéma d'ensemble Schéma en trois temps : ● ● R crée les objets individuels (tableaux, graphiques, textes) Output : fichiers eps, fichiers tex ● R crée le code LaTeX qui agence les objets individuels Output : fichier(s) tex, qui appelle les précédents ● Puis on compile le code LaTeX Output : fichier pdf La cerise sur le gâteau : ● ● R lance la compilation et l'affichage du PDF → pénible une fois
  • 5. R & LateX – Créer un graphique Export de graphiques au format eps : ● postscript(file="fig1.eps",horizontal=TRUE,width=8,height=5) graphe(individu1) dev.off() N'hésitez pas à utiliser les possibilités d'agence de graphes : ● ● Simple : par(mrow=c(1,2)) ● Plus complexe : layout(matrix=c(1,1,2,1,1,3,4,5,6),3,3,byrow=TRUE)
  • 6. R & LateX – Créer un tableau Fonction latex du package MASS ● Mais ça peut s'écrire à la main, si on veut personnaliser : ● latextab<-function(tab,file) { sink(file) cat("begin{table}[!htbp]begin{center}") cat("begin{tabular}{c|",rep("c",ncol(tab)),"}n",sep="") cat(NULL,colnames(tab),sep=" & ") cat(" nhline") fff<-function(x) paste( paste(x,collapse=" & "), "") cat(apply(cbind(rownames(tab),tab),1,fff),sep="n") cat("hlinenend{tabular}end{center}end{table}n") sink() }
  • 7. R et LaTeX – Exemple de tableau ●Exemple ad hoc : tab<-matrix(1:8,ncol=4) colnames(tab)<-paste("Col",1:ncol(tab),sep="") rownames(tab)<-paste("Ind",1:nrow(tab),sep="") latextab(tab,file="test.tex") ●Output : le fichier test.tex begin{table}[!htbp]begin{center}begin{tabular}{c|cccc} & Col1 & Col2 & Col3 & Col4 hlineInd1 & 1 & 3 & 5 & 7 Ind2 & 2 & 4 & 6 & 8 hline end{tabular}end{center}end{table} ●On peut ajouter des captions, des labels, etc.
  • 8. R et LaTeX – Adapter du texte (1) Le message → fichier pattern.txt : ● L'individu %@IDNOM@% a débuté son activité l'année %@ANDEB@%. Il liquide sa carrière l'année %@ANFIN@% avec %@NTVAL@% trimestres validés dont %@NTCOT@% trimestres cotisés. La première année, sa pension vaut %@NIVPENS@%, ce qui représente %@TXREMPLDERN@% de son dernier salaire. Ensuite, on remplace chaque identifiant par une valeur ● ●On peut enrichir avec des comportements particuliers → écriture totalement automatique de rapports
  • 9. R et LaTeX – Adapter du texte (2) Transformation du message : ● transformation<-function(message_init,id_correspondance) { message_trans<-message_init debut<-gregexpr(pattern="%@",message_init)[[1]] fin<-gregexpr(pattern="@%",message_init)[[1]] n<-length(debut) for (i in seq_along(debut)) { catch<-substr(message_init,debut[i]+2,fin[i]-1) remplac<-as.character(correspondance[3,catch]) message_trans<-sub(pattern=paste("%@",catch,"@ %",sep=""),rep=remplac,x=message_trans) } return(message_trans) } Fonction globale : ● R2LaTeX_text<-function(file_message,id_correspondance,file) { message<-readLines(file_message) sink(file) cat(transformation(message_init=message, id_correspondance=id_correspondance)) sink() }
  • 10. R et LaTeX – Adapter du texte (3) ●La table de correspondance : correspondance<-read.table(file=stdin(),sep=";",header=TRUE) IDNOM;SEXE;ANDEB;ANFIN;NTVAL;NTCOT;NIVPENS;TXREMPLDERN;NBENF Herbert Léonard;H;1965;2005;165;160;1850;60%;NA Patrick Juvet;H;1972;2008;142;127;1250;65%;2 Wanda Maria Ribeiro Furtado Tavares de Vasconcelos;F;1982;2018;180;150;1800;50%;5 transformation<-function(message_init,id_correspondance) ●On applique la fonction à un individu : id_indiv<-3 R2LaTeX_text(file_message="pattern.txt", id_correspondance=id_indiv, file=paste("Indiv",id_indiv,"resume.tex",sep="")) ●Output : L'individu Wanda Maria Ribeiro Furtado Tavares de Vasconcelos a débuté son activité l'année 1982. Il liquide sa carrière l'année 2018 avec 180 trimestres validés dont 150 trimestres cotisés. La première année, sa pension vaut 1800, ce qui représente 50% de son dernier salaire.
  • 11. R & LaTeX – Structure globale On commence par créer tous les tableaux et graphiques : ● pps<-function(file) postscript(file=file,horizontal=TRUE,width=8,height=5) for (i in 1:n_indiv) { individu<-get(paste("indiv",i,sep="") pps(file=paste("fig",i,".eps",sep="")) graphe(individu) dev.off() latextab(tableau(individu),file=paste("tab",i,".tex",sep="")) } Puis on insère tout ça dans un fichier global : ● sink("global.tex") for (i in 1:n_indiv) { cat("section*{Résumé de l'individu ",i,"}n") cat("includegraphics{fig",i,"}n",sep="") cat("input{tab",i,"}n",sep="") cat("clearpagen") } sink()
  • 12. R & LaTeX - Final Le fichier compilé se compose, outre le préambule, de : begin{document} input{global.tex} end{document} Il n'est pas inutile de dater les fichier de sortie ou les tableaux : temps<-Sys.time() #class(temps);?format.POSIXct jour<-format(temps,"%A %d %B %Y") heure<-format(temps,"%Hh%Mm%Ss") cat("Tableau créé le",jour,"à",heure)
  • 13. R & LaTeX – Ze cherry on ze cake ● R lance la compilation LaTeX : ● Fichier bat : set path=C:/Progra~1/MiKTeX~1.9/miktex/bin;C:Progra~1gsgs8.70bin latex --src -interaction=nonstopmode -include-directory "F:PretImmoLaTeX" %1.tex dvips -P pdf "%1.dvi" gswin32c.exe -sPAPERSIZE=a4 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="%1.pdf" -c save pop -f "%1.ps" ● Exécution du fichier bat : system(command=paste("compil.bat",fichier)) ● R ouvre Acrobat Reader : system(paste("C:/Progra~1/Adobe/Reader~1.0/Reader/AcroRd32.exe ",fichier,".pdf",sep=""),wait=FALSE) ● Difficulté : adapter les chemins à l'installation
  • 14. R & LaTeX – Zi end Merci de votre attention Des questions ?