Usare Latex e il linguaggio R contemporaneamente
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:
parti del documento
documento LaTeX (default =TRUE);
file sono creati all'interno della cartella corrente e saranno poi richiamati
durante la successiva fase di compilazione con LaTeX (default =FALSE);
non con font verbatim come di default.
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
Commenti recenti