Lo encontré
da <- data.frame(id=letters[1:5], score=1:5*2)
da
col <- function(x){
ifelse(x>7,
paste("\textcolor{blue}{", formatC(x, dig=2, format="f"), "}"),
paste("\textcolor{red}{", formatC(x, dig=2, format="f"), "}"))
}
da$score.string <- col(da$score)
da$score.string
require(xtable)
xtable(da[,c("id","score.string")])
da
-----Mensaje original-----
From: Rubén Gómez AntolÃ
Sent: Wednesday, May 08, 2013 9:00 PM
To: r-help-es
Subject: [R-es] Texto en color rojo en celdas especificas de una tabla
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.