簡體   English   中英

使用 JS 的帶有動態差異數量列的閃亮 DT 多級標題

[英]shiny DT multiple levels header with dynamic difference quantity columns using JS

再會。

我有一些任務。

library(shiny)
ui <- fluidPage(
  DT::dataTableOutput('tbl')
)

library(DT)

data <- data.frame(list(
  good = c('a','b','c'),
  city = c('chicago', 'denver','colorado'),
  stock = c(1,2,3),
  transit = c(4,5,6)
))

server <- function(input, output) {
  
 output$tbl <- DT::renderDataTable({
   data%>%
     tidyr::pivot_wider(names_from = city, values_from = c('stock', 'transit'),
                        values_fill = 0, names_glue = '{city}_{.value}')%>%
     dplyr::select(order(names(.)))%>%
     dplyr::relocate(good)
 }) 
 
}

在此處輸入圖片說明

我需要標題是兩級的,但他的列數(城市)總是不同的。 因此,帶有容器的標准版本不適合,您需要立即指示列數

需要...

在此處輸入圖片說明

謝謝!!!

您可以使用knitr::kable 這適用於任意數量的列和任意數量的城市。

library(shiny)
library(knitr)
library(kableExtra)

ui <- fluidPage(
  htmlOutput('tbl')
)

library(DT)

data <- data.frame(list(
  good = c('a','b','c'),
  city = c('chicago', 'denver','colorado'),
  stock = c(1,2,3),
  transit = c(4,5,6)
))

server <- function(input, output) {
  
  output$tbl <- renderText({
    data%>%
      tidyr::pivot_wider(names_from = city, values_from = c('stock', 'transit'),
                         values_fill = 0, names_glue = '{city}_{.value}')%>%
      dplyr::select(order(names(.)))%>%
      dplyr::relocate(good) -> tmp
    
    cols <- names(tmp)
    names(tmp) <- sub('.*_', '', cols)
    tmp %>%
      knitr::kable(type = 'text') %>%
      kable_styling(
        font_size = 15,
        bootstrap_options = c("striped", "hover", "condensed")
      ) %>%
      add_header_above(c('', table(sub('_.*', '', cols[-1]))))
  }) 
  
}

shinyApp(ui, server)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM