2013-03-06 83 views
14

我想知道是否有可能使用表格標題像使用knitr在.Rmd文件中的圖片標題?在R markdown文件上使用表格標題使用knitr在pandoc中使用轉換爲pdf

我看到了數字標題的選項,但我看不到表格標題的選項。我也想刪除消息,如"% latex table generated in R 2.15.2 by xtable 1.7-0 package % Wed Mar 06 15:02:11 2013"

我用X表來創建該表:我使用的樣品代碼如下:

```{r table2, results='asis', message=FALSE} 
library(xtable) 
print(xtable(head(iris))) 
``` 

我得到後通過pandoc處理如下表:

enter image description here

我試圖在Rmd文件中使用message = FALSE來擺脫上面顯示的消息。我也想知道是否可以在Rmd中自動添加表格的標題?

通過標題我的意思是像下面這樣(這是圖),圖號自動更新。

此輸出是pdf使用knitr創建的降價文件生成的pdf的快照。

enter image description here

謝謝。

+0

我認爲你所尋求的許多答案都是通過使用'?xtable'和'?print.xtable'。查看LaTeX評論的'type'和'caption' – 2013-03-06 22:30:32

+0

,問題已在'xtable'中解決;請參閱https://github.com/yihui/knitr-book/issues/3(新版本的'xtable'現在在CRAN上) – 2013-03-06 22:41:17

+0

@ Yihui:我將我的xtable升級到了CRAN,現在我擁有最新版本,而且我仍然得到相同的輸出。我使用的代碼

'''{r table2, results='asis', message=FALSE,echo=FALSE} library(xtable) print(xtable(head(iris))) '''
。我做錯了什麼嗎? – 2013-03-07 02:00:59

回答

11

如果您不堅持使用僅包含LaTeX/HTML的解決方案以及其他非常棒的xtable軟件包,則可能會與Pandoc的降價相同。一種選擇是添加caption manually下表,或使用我的R Pandoc writer package

> library(pander)       # load pkg 
> panderOptions('table.split.table', Inf) # not to split table 
> set.caption('Hello Fisher!')   # add caption 
> pander(head(iris))      # show (almost) any R object in markdown 
------------------------------------------------------------------- 
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
-------------- ------------- -------------- ------------- --------- 
    5.1   3.5   1.4   0.2  setosa 

    4.9   3.0   1.4   0.2  setosa 

    4.7   3.2   1.3   0.2  setosa 

    4.6   3.1   1.5   0.2  setosa 

    5.0   3.6   1.4   0.2  setosa 

    5.4   3.9   1.7   0.4  setosa 
------------------------------------------------------------------- 

Table: Hello Fisher! 

然後用Pandoc這個降價文件轉換爲HTML,乳膠,DOCX,ODT或任何其他流行的文檔格式。

+0

我試圖使用你的'pander'包,但找不到控制選項表格*標題的**位置**(默認情況下,位置低於表格,但我需要在上面)。我瀏覽文檔和網頁,但無濟於事。我可以單獨生成標題作爲R Markdown文本,但是在標題和表格之間存在一個頁邊空白問題,能夠指定位置(上/下)和頁邊空白會很好。) – 2014-11-19 08:24:35

+1

@AleksandrBlekh如果在表格上方標題不是有效的降格語法,它應該停留在表格之下,另一方面,您可以在HTML或LaTeX中將表格渲染到表格/圖片上方。後者,我建議'caption'和'floatrow' LaTeX包,像'\ flo atsetup [table] {capposition = top}' – daroczig 2014-11-19 10:21:34

+0

感謝您的快速回復和不錯的建議!我試圖使用'pander'和R Markdown格式的原因之一就是能夠根據需要生成多格式輸出。在這方面,格式特定的路線並不是最優的(沒有單一的代碼庫);我實際上以LaTeX特定的方式實現了一些東西,並且爲此只花了一段時間。無法想象花費更多時間來支持HMTL等。實際上,我找到了一個解決方案:我需要包含此修補程序的'pandoc'1.13+(標題應位於頂部):在此處搜索「表格標題」: http://johnmacfarlane.net/pandoc/releases.html。 – 2014-11-19 13:16:26

9

您可以在markdown中插入帶有自動編號標題的表格,以便使用直接編碼器代碼進行pandoc處理。

```{r setup, echo=FALSE} 
tn = local({ 
    i = 0 
    function(x) { 
    i <<- i + 1 
    paste('\n\n:Table ', i, ': ', x, sep = '') 
    # The : before Table tells pandoc to wrap your caption in <caption></caption> 
    } 
}) 
knit_hooks$set(tab.cap = function(before, options, envir) { 
    if(!before) 
    tn(options$tab.cap) 
}) 
default_output_hook = knit_hooks$get("output") 
knit_hooks$set(output = function(x, options) { 
    if (is.null(options$tab.cap) == F) 
    x 
    else 
    default_output_hook(x,options) 
}) 
``` 

要插入一個編號的表格標題:

```{r myirischunk, tab.cap="This is the head of the Iris table"} 
kable(head(iris)) 
``` 

通過重寫輸出鉤和使用tab.cap你不需要在你.rmd文件的頂部插入此代碼段混亂你的塊選項結果='asis'。

Thanks Knitr! PS:如果你想轉換爲latex/pdf,你可能會希望latex爲你編號。在這種情況下,您可以將tn(options$tab.cap)更改爲paste('\n\n:', options$tab.cap, sep='') - 但我沒有測試過。

+0

我試着用RStudio運行rmarkdown_0.3.3;我不需要'\ n \ n'後的':'。因爲:正在打印。但是,我無法弄清楚如何獲得表格之前的標題。我怎麼能修改鉤子來完成這項工作?對於數字,我可以用'knit_hooks做$集(積=函數(X,期權){ 膏( '

',選擇$ fig.cap, '
', 月= '')' – jessi 2014-11-07 16:43:01

+0

我改變了:'paste('\ n \ n:Table',i,':',x,sep ='')來粘貼('\ n \ n 表'',',',x,sep = '','

')'在標題後面添加空格,刪除已打印的內容並保留標題格式 – 2015-04-22 01:03:09

5

您可以使用xtable完成此操作。將caption添加到xtablecomment=FALSEprint函數。

print(
    xtable(
    head(iris), 
    caption = 'Iris data' 
), 
    comment = FALSE, 
    type = 'latex' 
) 

查看xtableprint.xtable文檔。

相關問題