Jak tworzyć kolorowe stoły za pomocą Sweave i xtable? [Zamknięte]

17

Używam Sweave i xtable do generowania raportu.

Chciałbym dodać trochę koloru na stole. Ale nie udało mi się znaleźć żadnego sposobu generowania kolorowych tabel za pomocą xtable.

Czy jest jakaś inna opcja?

RockScience
źródło
jaki jest kolorowy stół? Komórki z kolorowym tłem? Tekst komórki inny kolor? W ostatnim scenariuszu rozwiązaniem może być owijanie wartości odpowiednimi poleceniami tex.
mpiktas,
Potrzebuję tła jednego rzędu, aby mieć określony kolor. Czy muszę przepisać funkcję xtable?
RockScience
1
xtable został już przepisany (lub być może wcześniej napisany) jako funkcja lateksu w pakiecie R Hmisc. Osobiście przysięgam na odpowiednio wyglądające stoły. Nie sprawdziłem, czy ma miejsce na fantazyjną sztuczkę wstawiania opisaną poniżej, choć byłbym zaskoczony, jeśli nie.
conjugateprior
@ Conjugate Masz rację, chociaż nie jest to tak proste, jak myślałam; Zaktualizowałem odpowiedź o twoją sugestię.
chl
@chl „nie jest proste” to mało powiedziane. Ta funkcja jest bestią, choć bardzo sprawną.
conjugateprior

Odpowiedzi:

20

Chociaż nie próbowałem to wyraźnie z R (I zwykle postprocesowego tabel w Latex bezpośrednio \rowcolor, \rowcolorsalbo colortbl pakiet), myślę, że byłoby to łatwe do zrobienia, to grając z add.to.rowargumentów print.xtable(). Zasadniczo oczekuje dwóch składników (przekazanych jako list): (1) numer wiersza i (2)L.ZAT.miXKomenda. Należy pamiętać, że polecenia są dodawane na końcu określonych wierszy.

Wydaje się, że działa z colortblpakietem. Coś takiego

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

daje mi

wprowadź opis zdjęcia tutaj

(Jest to niestandardowy szablon Beamer, ale powinien on działać ze standardowym dokumentem. W przypadku Beamer prawdopodobnie będziesz chciał dodać tę tableopcję podczas ładowania pakietu.)

Aktualizacja:

Zgodnie z sugestią @ Conjugate możesz również polegać na urządzeniach Hmisc do obsługiT.miXwyjście, zobacz wiele opcji latex()funkcji. Oto przykład użycia:

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
źródło