无法通过 knitr2html 使用 kable / kableExtra table

can't get nice table with kable / kableExtra with knitr2html

我正在使用 knit2html 从 R 代码生成 html 报告。

一直在尝试使用 kable / kableExtra 将 table 打印出来,但似乎不起作用。

我将使用这个简单的程序来演示,所有尝试打印出 table 生成的打印结果都非常粗糙,而不是像我在某些教程中看到的那样(例如 https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html )

R程序:

#!/usr/bin/Rscript

library(data.table)
library(knitr)
library(kableExtra)

test_data=data.table(a=c(1,2,3,4,5),
                     b=rep('a', 5),
                     c=rep(2.0, 5),
                     d=rep('a', 5),
                     e=rep(2.0, 5),
                     f=rep('a', 5),
                     g=rep(2.0, 5))

knit2html('test.Rmd')

Rmd 文件:

```{r testprint1, echo=FALSE}
test_data
```
```{r testprint2, echo=FALSE}
kable(test_data)
```
```{r testprint3, echo=FALSE}
test_data %>% kable("html")
```                  
```{r testprint4, echo=FALSE}
test_data %>% kable("html") %>% kable_styling()
```                  

结果的屏幕截图 html:

我是不是漏掉了什么?

也许 knit2html 没有引入 bootstrap?

如果你从 markdown 本身渲染,你会从 kable_styling:

得到漂亮的 table
```{r echo=FALSE}
library(data.table)
library(knitr)
library(kableExtra)

test_data=data.table(a=c(1,2,3,4,5),
                     b=rep('a', 5),
                     c=rep(2.0, 5),
                     d=rep('a', 5),
                     e=rep(2.0, 5),
                     f=rep('a', 5),
                     g=rep(2.0, 5))
```

```{r testprint1, echo=FALSE}
test_data
```
```{r testprint2, echo=FALSE}
kable(test_data)
```
```{r testprint3, echo=FALSE}
test_data %>% kable("html")
```                  
```{r testprint4, echo=FALSE}
test_data %>% kable("html") %>% kable_styling()
``` 

使用 rmarkdown::render() 而不是 knitr::knit2html()。后者早就应该退休了,而且几乎只是出于历史原因而存在。具体来说,rmarkdown::render()调用Pandoc转换Markdown输出,knitr::knit2html()调用markdown包。有关详细信息,请参阅 this article