代码之家  ›  专栏  ›  技术社区  ›  mochajave

使用knitr2html的kable/KableXtra无法获得漂亮的桌子

  •  3
  • mochajave  · 技术社区  · 8 年前

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

    一直在尝试使用kable/KableXtra来很好地打印表格,但似乎不起作用。

    我将使用这个简单的程序来演示,所有试图打印表格的人都会生成非常粗糙的打印结果,而不是像我在一些教程中看到的那样(例如。 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的屏幕截图:

    enter image description here

    我错过什么了吗?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Yihui Xie    8 年前

    使用 rmarkdown::render() 而不是 knitr::knit2html() . 后者应该在很久以前就退休了,而且几乎只是出于历史原因才存在的。明确地 r标记::render() 调用Pandoc转换降价输出,以及 knitr::knit2html() 调用 降价 包裹看见 this article 了解更多信息。

        2
  •  0
  •   rdh    8 年前

    大概 knit2html 不是在引入引导吗?

    如果从降价本身进行渲染,则可以从 kable_styling :

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