Como criar tabelas coloridas com Sweave e xtable? [fechadas]

17

Estou usando Sweave e xtable para gerar um relatório.

Gostaria de adicionar um pouco de cor em uma mesa. Mas não consegui encontrar nenhuma maneira de gerar tabelas coloridas com o xtable.

Existe alguma outra opção?

RockScience
fonte
qual é a mesa colorida? Células com fundo de cor? Texto da célula de cor diferente? No último cenário, a solução pode estar agrupando os valores com os comandos tex apropriados.
Mvctas
Preciso que o plano de fundo de uma linha seja de uma cor específica. Preciso reescrever uma função xtable?
RockScience
1
O xtable já foi reescrito (ou talvez pré-escrito) como a função latex no pacote R Hmisc. Pessoalmente, juro por ele para encontrar mesas adequadas. Não verifiquei se há espaço para o truque de inserção sofisticado descrito abaixo, embora eu ficaria surpreso se não.
conjugateprior
@Conjugate Você está certo, embora não seja tão direto quanto eu pensaria; Atualizei minha resposta com sua sugestão.
chl
@chl 'não é direto' é um eufemismo. Essa função é uma fera, embora muito capaz.
conjugateprior

Respostas:

20

Embora eu não tente isso explicitamente a partir de R (I geralmente pós-processar as tabelas em Latex diretamente com \rowcolor, \rowcolorsou o colortbl pacote), eu acho que seria fácil de fazer isso, jogando com os add.to.rowargumentos print.xtable(). Basicamente, espera dois componentes (passados ​​como list): (1) número da linha e (2) . Observe que o comando foi adicionado no final da (s) linha (s) especificada (s).euUMATEX

Parece funcionar, com o colortblpacote. Então, algo assim

<<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 dá

insira a descrição da imagem aqui

(Este é um modelo personalizado do Beamer, mas deve funcionar com um documento padrão. Com o Beamer, você provavelmente desejará adicionar a tableopção ao carregar o pacote.)

Atualizar:

Seguindo a sugestão do @ Conjugate, você também pode contar com os recursos do Hmisc para lidar com a saída , veja as várias opções da função. Aqui está um exemplo de uso:TEXlatex()

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
fonte