Usare Latex e il linguaggio R contemporaneamente


Tags:

Con il presente articolo voglio illustrare brevemente come creare un sorgente ibrido scritto in latex e con delle analisi statistiche incluse con il linguaggio R.
Prima di tutto dobbiamo avere installato sia tetex (latex) e il programma R. Esistono entrambi sia per Linux che per windows.

Il pacchetto Sweave:
Sweave é un pacchetto di R sviluppato da Friedrich Leisch che permette di
generare automaticamente report statistici. Nelle ultime versioni
di R questo pacchetto é già incluso nel programma di base e non necessita di alcuna installazione.

L'obiettivo di Sweave é quello ti leggere un file ibrido e di estrapolare solo i comandi R per poi procedere alla sostituzine in codice latex.

I chunks di tipo SweaveSyntaxLatex
Le ultime versioni di Sweave sono in grado di interpretare anche dei chunks
definiti in un linguaggio più familiare agli utenti LaTeX.
es generale:

\begin{Scode}{, }
...
\end{Scode}

L’ambiente \begin{Scode} permette l’uso di numerose opzioni, le principali
sono:

  • label essa permetta di richiamare il risultato prodotto dal chunk anche in altre
    parti del documento
  • echo=FALSE permette di disabilitare la scrittura del codice computato da R sul
    documento LaTeX (default =TRUE);
  • fig=TRUE impone la generazione di una figura in formato .eps e .pdf. Tali
    file sono creati all'interno della cartella corrente e saranno poi richiamati
    durante la successiva fase di compilazione con LaTeX (default =FALSE);
  • results=tex impone che l'output sia prodotto nel font usato nel documento e
    non con font verbatim come di default.
  • results=hide nasconde qualsiasi risultato prodotto all'interno del chunk.
  • Inoltre sono anche a disposizione i comandi \Sexpr{}, che per-
    mette di eseguire una singola istruzione R ottenendo l’output nello stesso font
    del documento, ed il comando \SweaveOpts{, } che
    modifica le opzioni di default dalla sua occorrenza fino alla fine del documento.

    Come creare un file:
    Per prima cosa bisogna creare un nuovo file con estensione .Rtex o .Stex
    Scrivere il codice nel file e poi compilare con R.
    Se la procedura é andata a buon fine si può passare alla compilazione usando latex.

    Vediamo i dettagli.
    programma di esempio:

    \documentclass[a4paper,34pt]{report}
    \usepackage[italian]{babel}
    \usepackage[latin1]{inputenc}
    \usepackage{fancyhdr}
    \begin{document}
    \section*{Un esempio dell’uso di Sweave}
    \begin{Scode}{echo=FALSE}
    library(lattice)
    library(xtable)
    data(cats, package="MASS")
    \end{Scode}
    Consideriamo un esempio di regressione tratto da Venables \& Ripley
    (1996). Il dataframe contiene misure della massa cardiaca e corporea
    di \Sexpr{nrow(cats)} gatti, di cui \Sexpr{sum(cats$Sex=="F")} sesso
    femminile e \Sexpr{sum(cats$Sex=="M")} di sesso maschile.
    Un modello di regressione lineare del massa cardiaca e del sesso
    può essere ricavato utilizzando i comandi:
    \begin{Scode}
    lm1 <- lm(Hwt~Bwt*Sex, data=cats)
    lm1
    \end{Scode}
    I risultati di un test per la significatività dei coefficienti è rappresentato in tabella~\ref{tab:coeff} ed uno scatterplot con le rette di regressione è mostrato in figura~\ref{fig:cats}.
    \SweaveOpts{echo=false}
    \begin{Scode}{results=tex}
    xtable(lm1,
    caption="Significatività dei parametri di regressione",
    label="tab:coeff")
    \end{Scode}
    \begin{figure}[ht]\centering
    \begin{Scode}{fig=TRUE, width=12, height=6}
    trellis.par.set(col.whitebg())
    print(xyplot(Hwt~Bwt|Sex, data=cats, type=c("p","r")))
    \end{Scode}
    \caption{Le due rette di regressione}
    \label{fig:cats}
    \end{figure}
    \end{document}

    Per compilare il file basta lanciare il seguente comando in R:

    > Sweave("<path>/esempio.Rtex")

    il file generato é di tipo .tex

    adesso si può dare in pasto il file .tex a latex che genererà il nostro documento completo ;)

    Trovate maggiori info qui