2014-11-06 97 views
6

我想在Rnw文檔的xtable上添加標題標題。這是代碼。不幸的是,我無法在表格下添加標題。我試過\ caption {}函數,但它不會打印PDF。xtable在頂部添加一個標題並在表格下添加標題

我見過R: xtable caption (or comment),但它不適用於從R中的lm()函數創建的表。您是否有任何線索?

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

好吧,標題打印,但如果我想在表下添加說明,它不起作用。我不知道該怎麼做。例如,我想補充一句:「在這張表中,我使用了線性模型,blablabla ...」。簡而言之,將會有與表格相關的標題,表格和描述。順便說一下,感謝您的快速回復! – 2014-11-07 00:59:10

回答

8

我看不出xtable的快速選項文本添加到表的底部(這並不意味着沒有之一),所以我已經從here並從鏈接中使用的想法在你的問題。這是一個相當粗略的解決方法,其缺點是需要指定要添加的文本的寬度(等於表的寬度) - 如果過長,它會拉伸最後一列(查看變化8.5到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

我假設有乳膠許多替代來實現這一點,但可能讓你開始。


從評論:我試圖將其輸出到HTML和沒有工作。有什麼想法嗎?

您可以改變的add.to.row參數中的乳膠命令multicolumn,以改爲使用html表函數。 (使用Rmarkdown的html輸出)

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

非常感謝!它正在工作。如果你知道,爲什麼它在最後創造了一條新線。是否有可能將其刪除?這是一個設計目的! – 2014-11-07 04:16:21

+0

不客氣。你的意思是文字下方的水平線(\ hline)?如果是這樣,刪除指定你想要的行的位置;使用'hline.after'指定你想要的\ hlines ['...,blah}「),hline.after = c(-1,0))'] – user20650 2014-11-07 04:24:04

+0

哇!這正是我想要的。你真棒! – 2014-11-07 05:46:20