[R-es] Texto en color rojo en celdas especificas de una tabla

Rubén Gómez Antolí lobo en mucharuina.com
Jue Mayo 9 02:00:37 CEST 2013


Hola a todos:

Estoy intentando poner algunos valores en rojo de una tabla que estoy 
construyendo con xtable y, aunque lo tengo al alcance de los dedos, no 
lo consigo.

Voy por aquí:

# Datos a poner en tabla. Contiene valores perdidos.
#
Tabla<-structure(c(4.2, 2.5, 2.5, 2.9, 2.9, 4.1, 6, 6.1, 6.8, 6.6, 6.1,
5.3, 3.9, NA, 2.3, 2.6, 3.1, 4.3, 5.1, 5.2, 6.6, 5.9, 5.8, 4.7,
3.9, 2.4, 2.4, 2.5, 2.9, 4.4, 5.7, 6.2, 6.8, 6.5, 5.7, 4.4, 3.9,
2.6, 2.2, 2.6, 3.6, 3.9, 5.7, 6.2, 6.1, 5.9, 5.9, 5.1, 2.9, 2.5,
2.3, 2.5, 3.7, 5.6, 5.3, 5.8, 6.6, 6, 5.7, 5, 3.4, 2.8, 2.1,
1.3, 3.5, NA, 6, 6.4, 6.5, 6.7, 5.5, 4.6, 3.4, 2.5, 2.6, 2.2,
2.9, 4, 5.2, 5.7, 6.8, 6.1, 5.9, 4.7, 4, 2.4, 1.9, 2.6, 3.6,
4, 5.6, 6.3, 6.8, 6.3, 5.8, 4.5, 3.8, 3, 2.1, 2.1, 2.9, 4.6,
6.3, 7, 7.8, 7.7, 6.7, 6, 3.9, 3.1, 2.2, 2.6, 3.5, 4.3, 5.7,
6.7, 6.6, 6.7, 6.3, 4.7, 4, 3, 2.4, 2.7, 3.1, 4.5, 6, 6.9, 7.4,
7.1, 6.1, 5.6, 3.7, 2.2, 2.2, 2.5, 3.5, 4.4, 5.7, 6.4, 7.2, 6.2,
5.6, 5.1, 3.2, 2.5, 2.3, 2.5, 3.2, 4.4, 5.9, 6.3, 6.3, 6.8, 5.7,
4.9, 3.6, 2.4, 2.1, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4.3,
2.9, 2, 2.2, 4.1, 5.8, 5.6, 6.9, 8.3, 8, 6.8, 5.5, 4, 2.9, 1.9,
2.4, NA, 5, 6.3, 6, 7.5, NA, NA, NA, 4.4, 3.1, 2.7, 2.7, 3.8,
5.1, 7, 7, 7.7, 7.4, 6.7, 5.5, 3.7, 3.3, 2.61, 3, 4, 5.26, 6.53,
6.56, 7.94, 7.58, 6.93, 5.53, 4.1, 2.94, 2.24, 3.11, 4.14, 5.15,
6.32, 6.98, 7.98, 7.16, 6.03, 5.01, 4, 2.66, 2.2, 2.84, 3.94,
4.77, 6.13, 7.02, 6.83, 7.1, 6.63, 5.46, 4.03, 2.74, 2.47, 2.95,
3.12, 4.13, 5.84, 6.83, 7.39, 7.13, 6.79, 5.64, 3.45, 2.69, 2.52,
2.91, 3.24, 3.97, 6.17, 6.41, 7.41, 7.2, 6.68, 5.03, 4.2, 2.93,
2.48, 3.01, 3.52, 4.68, 6.27, 6.97, 7.72, 7.39, 6.34, 5.52, 3.95,
2.88, 2.41, 2.24, 3.7, 5.23, 5.63, 5.64, 7.03, 7.13, 6.42, 5.3,
3.88, 2.81, 2.48, 2.68, 3.49, 4.91, 5.19, 7.02, 7.52, 7.37, 6.15,
4.75, 3.79, 3.1, 2.52, 2.75, 3.24, 5.15, 6.29, 6.77, 7.5, 7.13,
6.44, 4.97, 3.55, 3.13, 2.37, 2.53, 3.75, 4.96, 6.27, 7.18, 7.38,
7.23, 6.5, 4.94, 4.27, 3.04, 2.09, 2.52, 2.89, 4.1, 5.97), .Tsp = 
c(1982.75,
2010.25, 12), class = "ts")
#
# Cambiamos el "NA" por ROJO
Tabla[which(is.na(Tabla))]<-rep("ROJO",
     length(which(is.na(Tabla))))
#
aux.tabla<-capture.output(print.xtable(xtable(Tabla)))
#
# Valores con los que vamos a rellenar, además incluye la
# expresión de Latex que los pondrá en rojo
aux.valesc<-c("\\textcolor{rojo}{ 2.85 }", "\\textcolor{rojo}{ 4.64 }", 
"\\textcolor{rojo}{ 2.58 }",
"\\textcolor{rojo}{ 3.47 }", "\\textcolor{rojo}{ 4.64 }", 
"\\textcolor{rojo}{ 5.81 }",
"\\textcolor{rojo}{ 6.7 }", "\\textcolor{rojo}{ 7.09 }", 
"\\textcolor{rojo}{ 6.9 }",
"\\textcolor{rojo}{ 6.17 }", "\\textcolor{rojo}{ 5.07 }", 
"\\textcolor{rojo}{ 3.47 }",
"\\textcolor{rojo}{ 6.9 }", "\\textcolor{rojo}{ 6.17 }", 
"\\textcolor{rojo}{ 5.07 }"
)
#

Y aquí estoy, no se como sustituir los valores de aux.valesc en 
aux.tabla, he probado con:

gsub("ROJO",aux.valesc,aux.tabla1)

pero no funciona ya que solo reemplaza ROJO con el primer valor de 
aux.valesc.

Ya había intentado introducir el \textcolor en la variable Tabla, pero 
al pasarla por xtable cambia la barra por «backslash».

La idea de hacerlo así la he sacado de aquí:

http://stackoverflow.com/questions/12148770/changing-the-color-of-negative-numbers-to-red-in-a-table-generated-with-xtable/12148962#12148962

¡Hum! ¿Quizás con el paquete Hmisc?:

http://r.789695.n4.nabble.com/Hmisc-latex-cell-background-color-td790064.html

Acepto ideas y consejos.

Gracias por vuestra atención.

Salud y Revolución.

Lobo.
-- 
Libertad es poder elegir en cualquier momento. Ahora yo elijo GNU/Linux,
para no atar mis manos con las cadenas del soft propietario.
Porque la libertad no es tu derecho, es tu responsabilidad.
http://www.mucharuina.com
---------
Desde El Ejido, en Almería, usuario registrado Linux #294013
http://www.counter.li.org



Más información sobre la lista de distribución R-help-es