¿Cómo crear tablas de colores con Sweave y xtable? [cerrado]

17

Estoy usando Sweave y xtable para generar un informe.

Me gustaría agregar un poco de color en una mesa. Pero no he logrado encontrar ninguna forma de generar tablas de colores con xtable.

¿Hay alguna otra opción?

RockScience
fuente
¿Cuál es la mesa de color? ¿Células con fondo de color? Texto de celda de color diferente? En el último escenario, la solución podría estar envolviendo los valores con los comandos tex apropiados.
mpiktas
Necesito que el fondo de una fila sea de un color específico. ¿Tengo que reescribir una función xtable?
RockScience
1
xtable ya ha sido reescrito (o quizás pre-escrito) como la función de látex en el paquete R Hmisc. Personalmente lo juro por mesas de aspecto adecuado. No he comprobado si tiene espacio para el truco de inserción elegante que se describe a continuación, aunque me sorprendería si no.
conjugateprior
@Conjugate Tienes razón, aunque no es tan sencillo como hubiera pensado; He actualizado mi respuesta con tu sugerencia.
chl
@chl 'no es sencillo' es un eufemismo. Esa función es una bestia, aunque muy capaz.
conjugateprior

Respuestas:

20

A pesar de que no lo probamos esta explícitamente de la letra R (por lo general el procesamiento posterior de las Tablas en látex directamente con \rowcolor, \rowcolorso la colortbl paquete), creo que sería fácil de hacer esto jugando con los add.to.rowargumentos print.xtable(). Básicamente espera dos componentes (pasados ​​como list): (1) número de fila y (2)LUNTmiXmando. Tenga en cuenta que los comandos se agregan al final de las filas especificadas.

Parece funcionar, con el colortblpaquete. Entonces, algo como esto

<<result=tex>>
library(xtable)
m <- matrix(sample(1:10,10), nr=2)
print(xtable(m), add.to.row=list(list(1),"\\rowcolor[gray]{.8} "))
@

me da

ingrese la descripción de la imagen aquí

(Esta es una plantilla personalizada de Beamer, pero debería funcionar con un documento estándar. Con Beamer, probablemente desee agregar la tableopción al cargar el paquete).

Actualizar:

Siguiendo la sugerencia de @ Conjugate, también puede confiar en las instalaciones de Hmisc para el manejoTmiXsalida, vea las muchas opciones de la latex()función. Aquí hay un ejemplo de uso:

library(Hmisc)
## print the second row in bold (including row label)
form.mat <- matrix(c(rep("", 5), rep("bfseries", 5)), nr=2, byrow=TRUE)
w1 <- latex(m, rownamesTexCmd=c("","bfseries"), cellTexCmds=form.mat, 
            numeric.dollar=FALSE, file='/tmp/out1.tex')
w1  # call latex on /tmp/out1.tex
## highlight the second row in gray (as above)
w2 <- latex(m, rownamesTexCmd=c("","rowcolor[gray]{.8}"), 
            numeric.dollar=FALSE, file='/tmp/out2.tex')
w2
chl
fuente