Tabelas com formatação condicional com Sweave

June 6, 2011
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

Tabela condicional gerada com Sweave.

Tabelas com formatação condicional permitem que você extraia a informação presente mais rápido. Com o Sweave, lógico, é possível apresentar tabelas com formatação. Basta que você faça uma função que formate adequadamente o valor das cédulas. No arquivo Sweave abaixo (salvar com extensão *.Rnw) eu preparo um exemplo reproduzível de como publicar as notas dos alunos. Com a cor azul serão as notas maiores ou iguais a sete, e cor vermelha nos casos contrários.

O grande truque é usar a opção sanitize.text.function=function(x){x} da função print.xtable() que aprendi com a ajuda do Marc Schwartz na R-help. Até a próxima ridícula.

\documentclass{article}
\usepackage{Sweave}
\usepackage{color}
\usepackage[brazil]{babel}

\title{Notas nas avalia\c{c}\~{o}es de Estat\'{i}stica Computacional}
\author{Walmes Zeviani}

\begin{document}
\maketitle

<<results=tex>>=
#-----------------------------------------------------------------------------
da <- data.frame(aluno=c("Carlos Adriano","Elizandra Pereira"
                   "Gustavo Flioz","Melissa Hultliertz",
                   "Rodrigo Allan","Vanessa Guith","Wilson Sandro"),
                 p1=10*rbeta(7,3,2), p2=10*rbeta(7,3,2))

colore <- function(x, corte=7){
  aux <- ifelse(x>=corte,
                paste("\\textcolor{blue}{", formatC(x, dig=2, format="f"), "}"),
                paste("\\textcolor{red}{", formatC(x, dig=2, format="f"), "}"))
  gsub("\\.", ",", aux)
}

da <- cbind(aluno=da$aluno, as.data.frame(apply(da[,-1], 2, colore)))

require(xtable)

caption <- "Notas nas avalia\\c{c}\\~oes."
print(xtable(da, caption=caption),
      sanitize.text.function=function(x){x},
      caption.placement="top", include.rownames=FALSE)
#-----------------------------------------------------------------------------
@ 

\end{document}

Tags: , , ,

Comments are closed.