在R markdown文件上使用表格标题,使用knitr在pandoc中使用转换为pdf

Jd *_*aba 14 markdown r pandoc knitr

我想知道是否可以在.Rmd文件中使用knitr使用表格标题,如图标题?

我看到了图标题的选项,但我看不到表格标题的选项.我也想删除诸如此类的消息"% 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))) 
``` 
Run Code Online (Sandbox Code Playgroud)

我通过pandoc处理后得到的表格如下:

在此输入图像描述

我试图在Rmd文件中使用message = FALSE来摆脱上面显示的消息.我还想知道是否可以在Rmd中自动添加表格的标题?

通过标题我的意思是下面的东西(这是图中的),图号自动更新.

此输出是pdf使用knitr创建的markdown文件生成的pdf快照.

在此输入图像描述

谢谢.

dar*_*zig 12

如果您不坚持使用LaTeX/HTML-only解决方案和其他非常棒的xtable软件包,您可能会在Pandoc的降价时实现相同的目标.一种选择是在表格下方手动添加标题,或使用我的R Pandoc编写器包:

> 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!
Run Code Online (Sandbox Code Playgroud)

然后使用Pandoc将此markdown文件转换为HTML,LaTeX,docx,odt或任何其他流行的文档格式.


Dea*_*anK 9

您可以在markdown中插入带有自动编号标题的表格,以便使用直接编织代码进行pandoc处理.将此代码段插入.rmd文件的顶部:

```{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)
})
```
Run Code Online (Sandbox Code Playgroud)

要插入带编号的表格标题:

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

通过覆盖输出挂钩并使用tab.cap,您不需要使用results ='asis'来混乱您的块选项.

谢谢Knitr!

PS:如果你想转换为latex/pdf,你可能希望乳胶为你编号.在这种情况下你可以tn(options$tab.cap)改为paste('\n\n:', options$tab.cap, sep='')- 但我没有测试过.


jun*_*kka 5

你可以用这个完成xtable.加入captionxtablecomment=FALSEprint功能.

print(
  xtable(
    head(iris),
    caption = 'Iris data'
  ),
  comment = FALSE,
  type = 'latex'
)
Run Code Online (Sandbox Code Playgroud)

请参阅xtableprint.xtable文档.