R - 从数据框创建列表并在降价中打印

R - create list from dataframe and print in markdown

这是我的数据框

dt <-
  data.frame(
    year = c(2018, 2019, 2020),
    sales = c(123, 987, 852)
  )

在我的markdown文档中我是这样打印数据的

datatable(
  dt,
  escape = F,
  rownames = F,
  filter = 'top',
  options = list(
    pageLength = 999,
    dom = "t",
    columnDefs = list(list(className = "dt-center", targets = "_all")),
    ordering = T)
) %>%
  formatCurrency(c("sales"), digits = 1)

我的实际数据框要大得多,我想按年拆分它并在单独的数据表中每年打印。另外我想为每个部分打印 h4 header。

我用这种方式试验了 lapply,但我无法在 markdown 中打印它,而且我不知道如何添加 header。

t_list <-
  lapply(split(dt, dt$year), function(df) {

    datatable(
      df,
      escape = F,
      rownames = F,
      filter = 'top',
      options = list(
        pageLength = 999,
        dom = "t",
        columnDefs = list(list(className = "dt-center", targets = "_all")),
        ordering = T)
    ) %>%
      formatCurrency(c("sales"), digits = 1)
})

你可以使用 htmltools::tagList:

```{r}
library(DT)
t_list <-
  lapply(split(dt, dt$year), function(df) {
    year <- unique(df$year)
    htmltools::tagList(htmltools::h4(year),datatable(
      df,
      escape = F,
      rownames = F,
      filter = 'top',
      options = list(
        pageLength = 999,
        dom = "t",
        columnDefs = list(list(className = "dt-center", targets = "_all")),
        ordering = T)
    ) %>%
      formatCurrency(c("sales"), digits = 1))
})
htmltools::tagList(t_list)

```