首页 > 解决方案 > 在 R markdown 中,如何在 r 块设置为 results = 'asis' 时输出可排序表

问题描述

在 R markdown 中,我想在 r 块设置为 results='asis' 时输出一个可排序的表

DT::datatable 产生我正在寻找的所需类型的输出。但是,这似乎不适用于 results='asis' 集。我不确定是否有任何逃避这种设置的方法。


```{r setup, include=FALSE}
library(knitr)

my_data = mtcars

df_list = list()

df_list[[1]] = my_data[1:5,]
df_list[[2]] = my_data[6:10,]
### tabs {.tabset}
```{r, results='asis', echo = FALSE}
for (i in 1:length(df_list)){
  cat("#### tab", i)
  print(kable(df_list[[i]]))
  cat('\n\n')
}

(*在上面的代码中,我不得不省略 r 块“```”的关闭,因为我不知道如何在此处正确显示它)

如您所见,第二个 r 块设置了 results='asis' 。我正在设置它,因为我想在 for 循环中动态生成选项卡。我正在使用 print(kable...) 打印表格,但它们不可排序。一旦我编织了文件,有没有办法输出可排序的表格?谢谢!

标签: rr-markdown

解决方案


DT必须初始化渲染器,如此处所示并在此处更一般讨论:

---
title: "DT tabs"
output: html_document
---


```{r setup, include=FALSE}
library(knitr)
library(dplyr)
library(DT)

my_data = mtcars

df_list = list()

df_list[[1]] = my_data[1:5,]
df_list[[2]] = my_data[6:10,]
data.frame() %>%
  DT::datatable() %>%
  knitr::knit_print() %>%
  attr('knit_meta') %>%
  knitr::knit_meta_add() %>%
  invisible()


```

### tabs {.tabset}
```{r, results='asis', echo = FALSE}
for (i in 1:length(df_list)){
  cat("#### tab", i,'\n')
  print(htmltools::tagList(DT::datatable(df_list[[i]])))
  cat('\n\n')
}

在此处输入图像描述


推荐阅读