2014-11-06 24 views
6

Voglio mettere un titolo di sottotitoli sullo xtable in un documento Rnw. Ecco il codice. Purtroppo, non sono in grado di aggiungere una didascalia sotto il tavolo. Ho provato la funzione \ caption {}, ma non stamperà il PDF.xtable aggiungendo un titolo sopra e una didascalia sotto il tavolo

Ho visto R: xtable caption (or comment), ma non funziona per una tabella creata dalla funzione lm() in R. Avete qualche idea?

<<yoman,echo=FALSE,results=tex>>= 
library(xtable) 

pop5lm <- lm(mpg ~ wt, data=mtcars) #my linear model 

print(xtable(pop5lm, 
      caption = c("Estimates of linear model for father Muro CB"), 
      label = "tab:one", digits = c(0,2, 2, 2,3)), 
      table.placement = "tbp", 
      caption.placement = "top") 
@ 
+0

Bene, il titolo viene stampato, ma se voglio aggiungere una descrizione sotto la tabella, non funziona. Non so come farlo. Ad esempio, desidero aggiungere: "In questa tabella, ho usato un modello lineare, blablabla ...". In breve, ci sarebbe il titolo, la tabella e la descrizione collegata al tavolo. A proposito, grazie per la tua risposta veloce! –

risposta

8

non riuscivo a vedere l'opzione veloce nel xtable per aggiungere testo alla parte inferiore della tabella (questo non significa che non ce n'è uno) quindi ho usato un'idea da here e dal link nella tua domanda È una correzione piuttosto approssimativa con il grande svantaggio che è necessario specificare la larghezza del testo da aggiungere (uguale alla larghezza della tabella) - se lo si fa troppo a lungo si allunga la colonna finale (per vedere le modifiche dalla 8.5 alla 10).

\documentclass{article} 

\usepackage{array} 
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}} 

\begin{document} 
\SweaveOpts{concordance=TRUE} 

<<yoman,echo=FALSE,results=tex>>= 
library(xtable) 

mod <- lm(mpg ~ wt, data=mtcars) #my linear model 

print(xtable(mod, 
      caption = "Estimates of linear model for father Muro CB ", 
      #label = "tab:one", 
      digits = c(0,2, 2, 2,3)), 
      table.placement = "h!", 
      caption.placement = "top", 
      add.to.row = list(list(2), 
      "\\hline \\multicolumn{5}{L{8.5cm}}{\\textbf{Note: } 
      This is a description, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah} \\\\")) 

@ 

\end{document} 

enter image description here

presumo ci sono molte alternative in lattice per ottenere questo risultato, ma potrebbe iniziare.


Dai commenti: ho provato l'output in HTML e non ha funzionato. qualche idea?

È possibile modificare il comando di lattice multicolumn nell'argomento add.to.row di print.table per utilizzare invece le funzioni di tabella html. (usando l'output html di Rmarkdown)

```{r,echo=FALSE, results='asis'} 
library(xtable) 

mod <- lm(mpg ~ wt, data=mtcars) #my linear model 

print(xtable(mod, 
      caption = "Estimates of linear model for father Muro CB ", 
      digits = c(0,2, 2, 2,3)), 
      type="html", 
      caption.placement = "top", 
      add.to.row = list(list(2), 
      '<tr><td colspan="5"><b>Note: </b> 
      This is a description, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, 
      blah, blah, blah, blah, blah, blah</td></tr>')) 

``` 
+0

Grazie mille! Sta funzionando. Se lo sai, perché sta creando una nuova linea alla fine. È possibile rimuoverlo? È uno scopo di design! –

+0

Prego. Intendi la linea orizzontale (\ hline) sotto il testo ?. In tal caso, per rimuovere specificare dove si desidera le linee; usa 'hline.after' per specificare le \ hlines che vuoi [' ..., blah} "), hline.after = c (-1, 0))'] – user20650

+0

Wow !! Questo è esattamente quello che volevo. Sei fantastico! –