How I stopped worrying about figure placement and learned to love Sweave - David Lovell
Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as...
Transcript of Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as...
![Page 1: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/1.jpg)
IntroduccionMas maderaReferencias
Sweave y odfWeave
Jose Antonio PalazonProf Titular de Ecologıa. Universidad de [email protected], http://webs.um.es/palazon
I Conferencia Hispana sobre RMurcia, 27 y 27 nov 2009
JA Palazon Sweave
![Page 2: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/2.jpg)
IntroduccionMas maderaReferencias
1 IntroduccionEscribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
2 Mas maderaArgumentos de un chunckLATEXOpen Office
3 Referencias
JA Palazon Sweave
![Page 3: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/3.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
¿Que es eso de . . . weave?
Sweave is a function in the statistical programminglanguage R that enables integration of R codeinto LaTeX or LyX documents. The purpose is“to create dynamic reports, which can beupdated automatically if data or analysischange”
Leisch,F 2002 Sweave, Part I: Mixing R and LaTeX: Ashort introduction to the Sweave file formatand corresponding R functions. R News 2 (3):28-31.
JA Palazon Sweave
![Page 4: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/4.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
¿Como escribimos?
bla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla blacodigo
codigo
codigo
bla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla blaresultados
bla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla bla bla
JA Palazon Sweave
![Page 5: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/5.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
¿Como llegan el codigo y los resultados?
Recorta y pega> x <- runif(100)
> mean(x)
[1] 0.5507894
>
Podemos comprobar con la media de 100valores procendites de la simulacion de unavariable de distribucion aleatoria (0, 1):
runif(100)
proporciona medias proximas a 0.5, porejemplo: 0.5507894.
JA Palazon Sweave
![Page 6: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/6.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
if(problem)call me
Literate programming is an approach toprogramming introduced by Donald Knuth
A literate program is an explanation of theprogram logic in a natural language, such asEnglish, interspersed with snippets of macrosand traditional source code
Order of human logic, not that of the compiler
JA Palazon Sweave
![Page 7: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/7.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Waht mean weave?
1 entrelazar2 tejer3 trenzar4 urdir5 tramar
JA Palazon Sweave
![Page 8: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/8.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Waht means chunck?
Problema: como usar conjuntamente lenguajede programacion y lenguaje natural
noweb Norman Ramsey 1994 Literateprogramming simplified. IEEE Software,11(5):97-105
chunks es codigo fuente y referencias a otroschunck separado del resto del texto por <<>>=al empezar y @ al finalizar
JA Palazon Sweave
![Page 9: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/9.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
A chunck
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla<<>>=
codigo
codigo
codigo
@
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla<<>>=
codigo
@
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
JA Palazon Sweave
![Page 10: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/10.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Primera experiencia: oowriter
Crearemos un documento con el siguientecontenido:
Estamos empezando con este<<>>=print("Hola Mundo")
@ejemplo que intenta ser sencillo.
JA Palazon Sweave
![Page 11: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/11.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Preparando nuestro R
Usuando LATEXtenemos la funcion Sweave()
incluida en la distribucion base
En el caso de Open Office:
Instalacion de librerıasinstall.packages()
Instalacion de odfWeave
install.packages("XML")
install.packages("odfWeave")
JA Palazon Sweave
![Page 12: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/12.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Primera experiencia
Ya tenemos el texto, lo guardamos comoeje1.odt
En una sesion de R:
library(odfWeave)
odfWeave("eje1.odt","Reje1.odt")
Abramos el documento Reje1.odt conoowriter
¿Que tenemos?
JA Palazon Sweave
![Page 13: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/13.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Revisando la primera experiencia
Modificamos el contenido en el fichero original
Anadiremos dentro del chunck la siguienteexpresion:
seq(1:5)^2
JA Palazon Sweave
![Page 14: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/14.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Usando variables
Vamos a seguir avanzado con este otro
ejemplo:
<<>>=
n<-5
seq(1:n)^2->serie
@
ejemplo que intenta ser sencillo,
donde consideramos una serie
de \Sexpr{n} elementos.
JA Palazon Sweave
![Page 15: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/15.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Visualizando datos
Vamos a seguir avanzado con este otro ejemplo:
<<>>=
n<-5
seq(1:n)^2->serie
@
ejemplo que intenta ser sencillo, donde consideramos una serie
de \Sexpr{n} elementos, a saber: \Sexpr{serie[1]},
\Sexpr{serie[2]}, \Sexpr{serie[3]}, ..., \Sexpr{serie[n]},
o en su forma completa:
<<>>=
cat (serie,"\n")
@
¿Podemos eliminar en el documento resultante lavisualizacion del ultimo chunck?
JA Palazon Sweave
![Page 16: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/16.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Modificando el comportamiento delchunck
Vamos a seguir avanzado con este otro ejemplo:
<<>>=
n<-5
seq(1:n)^2->serie
@
ejemplo que intenta ser sencillo, donde consideramos una serie
de \Sexpr{n} elementos, a saber: \Sexpr{serie[1]},
\Sexpr{serie[2]}, \Sexpr{serie[3]}, ..., \Sexpr{serie[n]},
o en su forma completa:
<<echo=F>>=
cat (serie,"\n")
@JA Palazon Sweave
![Page 17: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/17.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Incluyendo un grafico
Vamos a seguir avanzado con este otro ejemplo:
<<>>=
n<-5
seq(1:n)^2->serie
@
ejemplo que intenta ser sencillo, donde consideramos una
serie de \Sexpr{n} elementos, a saber: \Sexpr{serie[1]},
\Sexpr{serie[2]}, \Sexpr{serie[3]}, ..., \Sexpr{serie[n]}.
@
y ahora a~nadimos un grafico:
<<>>=
plot(1:n,serie)
@
JA Palazon Sweave
![Page 18: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/18.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
Incluyendo un grafico: fig=T
Vamos a seguir avanzado con este otro ejemplo:
<<>>=
n<-5
seq(1:n)^2->serie
@
ejemplo que intenta ser sencillo, donde consideramos una
serie de \Sexpr{n} elementos, a saber: \Sexpr{serie[1]},
\Sexpr{serie[2]}, \Sexpr{serie[3]}, ..., \Sexpr{serie[n]}.
@
y ahora a~nadimos un grafico:
<<fig=T>>=
plot(1:n,serie)
@
JA Palazon Sweave
![Page 19: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/19.jpg)
IntroduccionMas maderaReferencias
Escribiendo para seres humanosCalentando motores: ejemplosDocumentos mas completosReutilizando codigo
El codigo se puede reutilizar facilmenteSituacion: queremos disponer de una serie de variable con un valorconstante, y poder devolver ese valor en cualquier momento:
<<cinicial>>=
n<-5;a<-7.28;spi<-seq(-pi,pi,0.1)
@
...
<<>>=
n<-max(x)-min(x)
n
@
...
<<>>=
<<cinicial>>
n
@
JA Palazon Sweave
![Page 20: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/20.jpg)
IntroduccionMas maderaReferencias
Argumentos de un chunckLATEXOpen Office
Controlando el chunck
label: labels code chunks, and also givesthat name to any figures produced
echo: Print code in document? (True)
print: Prints all results? (False)
results: How are results included?(Default=verbatim; tex; hide)
fig: Is there a figure to print? (False)
JA Palazon Sweave
![Page 21: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/21.jpg)
IntroduccionMas maderaReferencias
Argumentos de un chunckLATEXOpen Office
LATEX: el comportamiento de Sweave()
Tablas con xtable()
SweaveOpts{eps=F}
JA Palazon Sweave
![Page 22: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/22.jpg)
IntroduccionMas maderaReferencias
Argumentos de un chunckLATEXOpen Office
Open Office: el comportamiento deodfWeave
Manual de odfWeave()
Cambiamos xtable() por odfTable()
imageDefs <- getImageDefs()
imageDefs$dispWidth <- 4.5
imageDefs$dispHeight<- 4.5
setImageDefs(imageDefs)
JA Palazon Sweave
![Page 23: Sweave y odfWeave - fobos.inf.um.esfobos.inf.um.es/palazon/documentos/taller.odfsweave.pdf · M as madera Referencias Sweave y odfWeave Jos e Antonio Palaz on Prof Titular de Ecolog](https://reader030.fdocuments.us/reader030/viewer/2022021804/5ba1feef09d3f2716b8d9778/html5/thumbnails/23.jpg)
IntroduccionMas maderaReferencias
Por favor, consulte las referencias
Francesc Carmona 2007 Generacion automaticade informes con Sweave y LaTeX
J.R. Lobry y A.B. DufourComment rediger unrapport avec la commande odfWeave() de R ?Pagina principal de Sweave
Sweave User ManualSweave FAQManual de odfWeave()
JA Palazon Sweave