2011-09-14 8 views
9

Avere una domanda sull'uso di xtable con Sweave quando ci sono più colonne. Una tabella su cui sto lavorando ha circa 25 colonne e 5 righe. Il numero esatto di colonne non è noto come dinamico.Split xtable ouput in sottomessi

Quando eseguo diciamo,

table1 < - tavolo (df $ SomeField)

ottengo una tabella che supera sostanzialmente la lunghezza della pagina.

 ColA ColB ColC 
--------------------------- 
RowA 1  2  3 ...... 
RowB 3  4  6 ...... 

Se un fare un XTABLE su questo, ed eseguirlo tramite Sweave,

xtable(table1, caption="some table") 

trabocca.

Quello che sto cercando è qualcosa di simile,

 ColA ColB ColC 
--------------------------- 
RowA 1  2  3 
RowB 3  4  6 

     ColD ColE ColF 
--------------------------- 
RowA 11  9  34 
RowB 36  8  65 

con le \ hline etc markup. Fondamentalmente, dividere l'xtable in parti diciamo 5 colonne per "sotto-tabella".

Sto eseguendo anche questo in un processo batch, quindi non sarà in grado di apportare modifiche ai singoli file, qualunque sia la soluzione che deve essere in grado di essere generato eseguendo Sweave sul file Rnw.

Grazie in anticipo,

saluti,

  • Raj.
+0

Si potrebbe anche voler dare un'occhiata a Hmisc :: latex perché supporta il formato longtable. Non sono un utente Sweave ma ottengo un buon output LaTeX con quel programma. –

risposta

3

Ecco un esempio di questo da ?latex.table.by nel pacchetto taRifx. È possibile preparare qualcosa di simile usando longtable in LaTeX e utilizzare il codice latex.table.by come prototipo.

my.test.df <- data.frame(grp=rep(c("A","B"),10),data=runif(20)) 
library(xtable) 
latex.table.by(my.test.df) 
# print(latex.table.by(test.df), include.rownames = FALSE, include.colnames = TRUE, sanitize.text.function = force) 
# then add \usepackage{multirow} to the preamble of your LaTeX document 
# for longtable support, add ,tabular.environment='longtable' to the print command (plus add in ,floating=FALSE), then \usepackage{longtable} to the LaTeX preamble 

Indipendentemente, il pacchetto longtable nel lattice è la chiave.

Modifica: sembra che ci siano troppe colonne e non troppe righe. In tal caso, prima prova ad abbellire solo quella pagina.

Nell'intestazione:

\usepackage{lscape} 

intorno alla tua mensa:

\begin{landscape} 
... 
\end{landscape} 

o semplicemente usare sidewaystable.

Se il tuo tavolo è troppo largo per stare in una pagina, prova il pacchetto supertabular, che dalla descrizione sembra che potrebbe gestire l'interruzione di più pagine in base alla larghezza (ma non l'ho mai usato così non può essere sicuro).

+0

Ciao gsk3, grazie per il feedback.Sfortunatamente, il numero di colonne può essere piuttosto elevato (dato che è una variabile dinamica dipendente da altri fattori). Quindi, per ottenere risultati garantiti potrebbe non adattarsi anche a un paesaggio. Il numero di righe è fisso - 5-6. – xbsd

+0

@xbsd: aggiunto un altro suggerimento. Se 'supertabular' non funziona, chiedi a una mod di migrare su http://tex.stackexchange.com/ poiché ci sono esperti di LaTeX lì. –

+1

@xbsd: perché non si traspone semplicemente la matrice? Quindi hai un numero fisso e basso di colonne e un numero elevato di righe. Questo è molto facile con l'ambiente longtable (usa tabular.environment = "longtable"). Questa soluzione è molto semplice e b) occuperà meno spazio nel documento. – Thierry