在knitr驱动的文档中显示html表(通过xtable)

时间:2015-01-24 22:36:06

标签: r knitr xtable

我正在尝试使用knitr创建html页面时如何使用xtable。 我使用xtable的主要原因是因为我希望能够旋转列名和/或rownames。 这是我的.rmd文件:

---
output: html_document
---

```{r, echo=FALSE} 
library(xtable)
data(tli)
tli.table <- xtable(tli[1:10,])
align(tli.table) <- "|r|r|lp{3cm}l|r|"
tt1 <- print(tli.table, rotate.rownames=TRUE,
             rotate.colnames=TRUE, type =   "html")
```

```{r, echo=FALSE, results = 'asis'}
tt1
```   

当我使用knit2html将此文档编织为html时,行和列名称混乱,并且html代码也会被回显。我究竟做错了什么? (或者有没有更好的方法通过knitr构建布局合理的html表?)

1 个答案:

答案 0 :(得分:3)

彼得 我很遗憾xtable在重新创建之前曾经工作过的表格而不是新R Markdow v2使用pandoc转换为html时的表格时会感到沮丧。

我能用你的表做的最多就是让它渲染漂亮但没有本地列对齐或列标题旋转。为此,将所有代码放在一个带有选项results='asis'

的r块中

这对我使用RStudio 0.98.1103,R版本3.1.3(2015-03-09),平台:x86_64-pc-linux-gnu(64位),运行于:Ubuntu精确(12.04.5) LTS),knitr_1.9,rmarkdown_0.5.1和xtable_1.7-4:

由于您提到使用knit2html(不适用于R 3.1.3),请在您的安装中尝试我的代码并查看它是否仍然有效。 如果是这样,这可能是暂时不能获得最新版本的原因。

使用Knitr Kable标题显示与数字列右对齐的默认对齐方式一致,否则左对齐。 Xtable的标题似乎始终居中,我无法找到改变此行为的选项。

---
output:
html_document:
   self_contained: false
   theme: flatly
   keep_md: true
---
<style type="text/css">
table { max-width: 200%;
        border: 1px solid #ccc; }
th {    background-color: #000000;
        color: #ffffff;
        width: 2.5cm; }
td {    background-color: #dcdcdc }
</style>

```{r, echo=FALSE, results = 'asis'}
library(xtable)
data(tli)
tli.table <- xtable(tli[1:10,])
align(tli.table) <- "|r|r|lp{3cm}l|r|"
print(tli.table,
      rotate.rownames=F,
      rotate.colnames=F,
      type="html",
      include.rownames = F)
```

```{r via kable, echo=FALSE, results='markup'}
require(knitr)
kable(tli.table, format = "html", 
      padding = 0, 
      row.names=F,
      caption = "Via kable")
```