usar studio programacion poner libro lenguaje estadistica datos con como codigos ciencia r latex sweave

studio - Generando salida LaTeX desde el marco de datos R



sweave r markdown (4)

A menudo utilizo el latex y describe funciones del paquete Hmisc , que permiten un gran ajuste.

library(Hmisc) d <- data.frame(a=LETTERS[1:5], x=rnorm(5)) latex(d, file="") # If you want all the data latex(describe(d), file="") # If you just want a summary

Estoy ejecutando R v2.14.1 en Ubuntu. Estoy escribiendo un script que generará un marco de datos, que representa una tabla de resultados.

Me gustaría mostrar esta ''tabla'' como un archivo .tex para poder crear una tabla de calidad de ''publicación académica'', para imprimir. He oído hablar de Sweave (y he leído algunos documentos de información general sobre Sweave), por lo que creo que esta es la forma de proceder. Sin embargo, después de haber dicho que no he visto un ejemplo en el que Sweave produzca un marco de datos como un archivo de texto, todos los ejemplos de Sweave que he visto hasta ahora, parecen ideados y no algo sobre lo que pueda basarme.

¿Hay algunas pautas que puedo seguir para generar texto desde un marco de datos? Además, ¿será más sencillo (más sencillo) si construyo la cadena TeX directamente desde mi script R y guardo la cadena en un archivo? (No me queda claro qué ofrece Sweave por encima de la construcción manual de la cadena TeX ''manualmente'').


La mejor solución que he encontrado es con el paquete R xtable. Puede generar fácilmente un archivo con formato LaTeX que

x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9) y <- c(10, 20, 30, 40, 50, 60, 70, 80, 90) df <- data.frame("x"=x, "y"=y) print.xtable(xtable(head(df)), file = "./Data.txt")

Luego, puede agregar el contenido de "Data.txt" a su archivo LaTeX con

/input{./Data.txt}

Una solución más rápida y sucia que simplemente redirige la salida de texto que normalmente se imprime en la consola es la siguiente:

sink("./Output.txt") head(data) sink()

También puede usar cat () para agregar comentarios individuales


Personalmente, me gusta administrar todo mi código desde R en lugar de un archivo Rnw cuando estoy generando tablas de resumen y no estoy escribiendo un informe; al usar cat() y sink() esto le permite trabajar desde el entorno actual en lugar de obligando a que todo se cargue y se vuelva a cargar cada vez que necesite volver a ejecutar el documento. Además, hace que sea un poco más fácil usar R para "duplicar", "pegar" o "bucle" a través de grandes cantidades de datos o listas de datos. Hay que tener en cuenta, sin embargo, que esto rompe un poco la idea de la investigación reproducible.

Aquí hay un ejemplo de lo que pondría en un archivo R (recordando, por supuesto que / se necesita escapar /:

dat <- list() for(i in 1:15) { dat[[i]] <- sample(c("A","B"),1000,replace=TRUE) # Dummy data } sink("temp.Rnw") cat(" //documentclass{article} //usepackage{Sweave} //begin{document} ") # Print a lot of tables invisible( lapply(dat, function(x) print(xtable(table(x),caption=names(x)),table.placement="!htp")) ) cat(" //end{document} ") sink() Sweave("temp.Rnw") compilePdf("temp.Rnw")


El paquete xtable tiene algunos ejemplos de cómo generar tablas. Ver viñeta. Cuando estés escribiendo un fragmento, asegúrate de establecer el fragmento en <<results=tex>> . Ver ejemplo de Sweave , por ejemplo, this .

Así es como yo daría salida a un data.frame.

<<results=tex>> xtable(my.data.frame) @

Y el resultado en bruto se vería algo así:

> xtable(my.data.frame) % latex table generated in R 2.14.1 by xtable 1.6-0 package % Tue Feb 14 10:03:03 2012 /begin{table}[ht] /begin{center} /begin{tabular}{rllr} /hline & p & q & r // /hline 1 & condition/_a & grp/_1 & 3 // 2 & condition/_a & grp/_1 & 3 // 3 & condition/_a & grp/_1 & 4 // 4 & condition/_a & grp/_1 & 1 // 5 & condition/_b & grp/_1 & 4 // 6 & condition/_b & grp/_1 & 3 // 7 & condition/_b & grp/_1 & 5 // 8 & condition/_b & grp/_1 & 5 // 9 & condition/_a & grp/_2 & 4 // 10 & condition/_a & grp/_2 & 1 // 11 & condition/_a & grp/_2 & 1 // 12 & condition/_a & grp/_2 & 1 // 13 & condition/_b & grp/_2 & 5 // 14 & condition/_b & grp/_2 & 1 // 15 & condition/_b & grp/_2 & 5 // 16 & condition/_b & grp/_2 & 2 // /hline /end{tabular} /end{center} /end{table}