2014-11-06 31 views
6

Chcę umieścić tytuł napisu na xtable w dokumencie Rnw. Oto kod. Niestety nie mogę dodać podpisu pod tabelą. Wypróbowałem funkcję \ caption {}, ale nie wydrukuje ona pliku PDF.xtable dodając tytuł na górze i podpis pod tabelą

Widziałem R: xtable caption (or comment), ale nie działa dla tabeli, która została utworzona z funkcji lm() w R. Czy masz jakąkolwiek wskazówkę?

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

Cóż, tytuł drukuje, ale jeśli chcę dodać opis pod tabelą, to nie działa. Nie wiem, jak to zrobić. Na przykład chcę dodać: "W tej tabeli użyłem modelu liniowego, blablabla ...". W skrócie, będzie tytuł, tabela i opis związany z tabelą. Przy okazji, dziękuję za szybką odpowiedź! –

Odpowiedz

8

nie mogłem zobaczyć szybkie opcja w xtable dodać tekst na dole tabeli (to nie znaczy, że nie jest) tak Użyłem pomysł z here i z linkiem w twoim pytaniu. Jest to dość prymitywna poprawka z dużą wadą, którą musisz podać szerokość dodawanego tekstu (równą szerokości tabeli) - jeśli zrobisz to zbyt długo, rozciąga się ostatnia kolumna (aby zobaczyć zmianę od 8,5 do 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

Przypuszczam, że istnieje wiele alternatyw w lateksie, aby tego dokonać, ale może Ci zacząć.


Od komentarze: Próbowałem wyprowadzanie go do html i nie działa. jakieś pomysły?

Możesz zmienić polecenie latex multicolumn w argumencie add.to.row z print.table, aby użyć funkcji tabeli html. (używając html output 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

Wielkie dzięki! To działa. Jeśli wiesz, dlaczego tworzysz nową linię na końcu. Czy można go usunąć? To jest cel projektu! –

+0

Nie ma za co. Masz na myśli poziomą linię (\ hline) pod tekstem ?. Jeśli tak, aby usunąć określić, gdzie chcesz wierszy; użyj 'hline.after', aby określić \ linie, które chcesz [" ..., bla "}), hline.after = c (-1, 0))'] – user20650

+0

Wow! Dokładnie tego chciałem. Jesteś niesamowity! –