presentaciones - sweave r studio install
Herramientas para hacer tablas de látex en R (8)
Dos utilidades en el paquete taRifx se pueden usar en concierto para producir tablas de filas múltiples de jerarquías anidadas.
library(datasets)
library(taRifx)
library(xtable)
test.by <- bytable(ChickWeight$weight, list( ChickWeight$Chick, ChickWeight$Diet) )
colnames(test.by) <- c(''Diet'',''Chick'',''Mean Weight'')
print(latex.table.by(test.by), include.rownames = FALSE, include.colnames = TRUE, sanitize.text.function = force)
# then add /usepackage{multirow} to the preamble of your LaTeX document
# for longtable support, add ,tabular.environment=''longtable'' to the print command (plus add in ,floating=FALSE), then /usepackage{longtable} to the LaTeX preamble
A petición general, una wiki de la comunidad sobre la producción de tablas de látex en R. En esta publicación, daré una descripción general de los paquetes y blogs más utilizados con código para producir tablas de látex a partir de objetos menos sencillos. Por favor, siéntase libre de agregar lo que me perdí, y / o dar consejos, sugerencias y pequeños trucos sobre cómo producir tablas de látex con formato agradable con R.
Paquetes:
- xtable : para tablas estándar de los objetos más simples. Una bonita galería con ejemplos se puede encontrar here .
- memisc : herramienta para la gestión de datos de encuestas, contiene algunas herramientas para tablas de látex de estimaciones de modelos de regresión (básicas).
- Hmisc contiene una función
latex()
que crea un archivo de tex que contiene el objeto de elección. Es bastante flexible y también puedelongtable
tablas de látex delongtable
. ¿Hay mucha información en el archivo de ayuda?latex
- miscFuncs tiene una función ordenada ''latextable'' que convierte datos de matriz con entradas alfabéticas y numéricas mixtas en una tabla LaTeX y las imprime en la consola, para que puedan copiarse y pegarse en un documento LaTeX.
- texreg paquete texreg ( papel JSS ) convierte la salida del modelo estadístico en tablas LaTeX. Fusiona múltiples modelos. Puede hacer frente a unos 50 tipos de modelos diferentes, incluidos modelos de red y modelos multinivel (lme y lme4).
- reporttools paquete reporttools ( documento JSS ) es otra opción para estadísticas descriptivas sobre variables continuas, categóricas y de fecha.
- tables paquete tables es quizás el paquete de creación de tablas LaTeX más general en R para estadísticas descriptivas
- stargazer paquete stargazer hace bonitas tablas de resumen de modelos estadísticos
Blogs y fragmentos de código
- Existe la función outreg de Paul Johnson que proporciona tablas similares a Stata en Latex para la salida de regresiones. Este funciona muy bien.
- Como se indicó en una pregunta anterior, hay un fragmento de código para adaptar el paquete memisc para objetos lme4 .
Preguntas relacionadas :
- Sugerencia para el paquete de creación de tablas R / LaTeX
- Paquete de salida de calidad Rreport / LaTeX
- Ordenar una tabla para la salida de látex con xtable
- ¿Alguna forma de producir una tabla LaTeX a partir de un objeto de ajuste de modelo lme4 mer?
- R data.frame con títulos especificados apilados para salida de látex con xtable
- Automatizando la adición de tablas de látex a R , con una sintaxis muy flexible e interesante utilizando el lenguaje de fórmulas
El paquete stargazer es otra buena opción. Admite objetos de muchas funciones y paquetes de uso común (lm, glm, svyreg, survival, pscl, AER), así como de zelig. Además de las tablas de regresión, también puede generar estadísticas de resumen para marcos de datos o directamente generar el contenido de marcos de datos.
Gracias Joris por crear esta pregunta. Con suerte, se convertirá en un wiki de la comunidad.
Los paquetes de booktabs en látex producen tablas de aspecto agradable. Aquí hay una publicación de blog sobre cómo usar xtable para crear tablas de látex que usan booktabs
También agregaría el paquete apsrtable
a la mezcla, ya que produce tablas de regresión de buen aspecto.
Otra idea: algunos de estos paquetes (especialmente memisc y apsrtable) permiten extensiones fáciles del código para producir tablas para diferentes objetos de regresión. Uno de estos ejemplos es el código memisc lme4 que se muestra en la pregunta. Podría tener sentido iniciar un repositorio de github para recopilar dichos fragmentos de código y, con el tiempo, incluso agregarlo al paquete memisc. ¿Ningún arrendatario?
Me gustaría añadir una mención del paquete "brew". Puede escribir un archivo de plantilla de preparación que sería LaTeX con marcadores de posición y luego "preparar" para crear un archivo .tex para / include o / input en su LaTeX. Algo como:
/begin{tabular}{l l}
A & <%= fit$A %> //
B & <%= fit$B %> //
/end{tabular}
La sintaxis de preparación también puede manejar bucles, por lo que puede crear una fila de tabla para cada fila de un marco de datos.
Otro paquete R para agregar múltiples modelos de regresión en las tablas de LaTeX es texreg .
También puede usar la función latextable del paquete R micsFuncs:
latextable (M) donde M es una matriz con entradas alfabéticas y numéricas mixtas genera una tabla básica de LaTeX en la pantalla, que se puede copiar y pegar en un documento de LaTeX. Donde hay números pequeños, también los reemplaza con notación de índice (por ejemplo, 1.2x10 ^ {- 3}).
Tengo algunos trucos y soluciones a las ''características'' interesantes de xtable y Latex que compartiré aquí.
Truco # 1: Eliminación de duplicados en columnas y Truco # 2: Uso de Booktabs
Primero, cargue los paquetes y defina mi función limpia.
<<label=first, include=FALSE, echo=FALSE>>=
library(xtable)
library(plyr)
cleanf <- function(x){
oldx <- c(FALSE, x[-1]==x[-length(x)])
# is the value equal to the previous?
res <- x
res[oldx] <- NA
return(res)}
Ahora genera algunos datos falsos
data<-data.frame(animal=sample(c("elephant", "dog", "cat", "fish", "snake"), 100,replace=TRUE),
colour=sample(c("red", "blue", "green", "yellow"), 100,replace=TRUE),
size=rnorm(100,mean=500, sd=150),
age=rlnorm(100, meanlog=3, sdlog=0.5))
#generate a table
datatable<-ddply(data, .(animal, colour), function(df) {
return(data.frame(size=mean(df$size), age=mean(df$age)))
})
Ahora podemos generar una tabla y usar la función de limpieza para eliminar entradas duplicadas en las columnas de la etiqueta.
cleandata<-datatable
cleandata$animal<-cleanf(cleandata$animal)
cleandata$colour<-cleanf(cleandata$colour)
@
esta es una mesa normal
<<label=normal, results=tex, echo=FALSE>>=
print(
xtable(
datatable
),
tabular.environment=''longtable'',
latex.environments=c("center"),
floating=FALSE,
include.rownames=FALSE
)
@
esta es una tabla normal en la que una función personalizada ha convertido los duplicados en NA
<<label=cleandata, results=tex, echo=FALSE>>=
print(
xtable(
cleandata
),
tabular.environment=''longtable'',
latex.environments=c("center"),
floating=FALSE,
include.rownames=FALSE
)
@
Esta tabla usa el paquete booktab (y necesita un / usepackage {booktabs} en los encabezados)
/begin{table}[!h]
/centering
/caption{table using booktabs.}
/label{tab:mytable}
<<label=booktabs, echo=F,results=tex>>=
mat <- xtable(cleandata,digits=rep(2,ncol(cleandata)+1))
foo<-0:(length(mat$animal))
bar<-foo[!is.na(mat$animal)]
print(mat,
sanitize.text.function = function(x){x},
floating=FALSE,
include.rownames=FALSE,
hline.after=NULL,
add.to.row=list(pos=list(-1,bar,nrow(mat)),
command=c("//toprule ", "//midrule ", "//bottomrule ")))
#could extend this with /cmidrule to have a partial line over
#a sub category column and /addlinespace to add space before a total row
@
... y Trick # 3 entradas multilínea en una Xtable
Generar más datos.
moredata<-data.frame(Nominal=c(1:5), n=rep(5,5),
MeanLinBias=signif(rnorm(5, mean=0, sd=10), digits=4),
LinCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""),
MeanQuadBias=signif(rnorm(5, mean=0, sd=10), digits=4),
QuadCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""))
names(moredata)<-c("Nominal", "n","Linear Model /nBias","Linear /nCI", "Quadratic Model /nBias", "Quadratic /nCI")
Ahora produzca nuestro xtable, utilizando la función de desinfección para reemplazar los nombres de columna con los comandos correctos de nueva línea de Latex (incluidas las barras invertidas dobles para que R esté contento)
<<label=multilinetable, results=tex, echo=FALSE>>=
foo<-xtable(moredata)
align(foo) <- c( rep(''c'',3),''p{1.8in}'',''p{2in}'',''p{1.8in}'',''p{2in}'' )
print(foo,
floating=FALSE,
include.rownames=FALSE,
sanitize.text.function = function(str) {
str<-gsub("/n","////", str, fixed=TRUE)
return(str)
},
sanitize.colnames.function = function(str) {
str<-c("Nominal", "n","//centering Linear Model//// //% Bias","//centering Linear //// 95//%CI", "//centering Quadratic Model//// //%Bias", "//centering Quadratic //// 95//%CI //tabularnewline")
return(str)
})
@
(aunque esto no es perfecto, ya que necesitamos / tabularnewline para que la tabla tenga el formato correcto, y Xtable aún se coloca en una final, así que terminamos con una línea en blanco debajo del encabezado de la tabla).