循环显示数据表的有效方法

时间:2020-09-02 15:28:04

标签: shiny dt

我有一个数据集,其中有一个名为“变量”的变量。我想在“变量”列的每个唯一值的闪亮应用程序中显示表格。请参阅下面的图像快照。我正在通过 lapply()使用它。它工作正常。但是显示表需要一些时间,因为我有近20张表。每个表都有近15列。除了lapply()之外,还有其他更好的循环方法可以做到这一点。

enter image description here

stratsgroups <- Detailed %>% distinct(Variables) %>% pull()

    observe({
      
      lapply(stratsgroups, function(x) {
        
        output[[paste0('T_', x)]] <- DT::renderDataTable({
          
          # Data Preparation
          data() %>% dplyr::filter(Variables == x) %>% select(2:(ncol(Detailed)-2)) %>% 
            rename(!!x := !!sym("Categories"))  %>% 
            
            
          # ==============
          # DT Option
          # ==============
          
          datatable(rownames=FALSE,
                    extensions = c('Buttons', 'FixedColumns'), selection = 'none',
                    options = list(
                      columnDefs = list(list(className = 'dt-center', targets = '_all')),
                      paging = T, 
                      pageLength = 10, 
                      searching = FALSE, 
                      ordering=F, 
                      info = F,
                      dom = 'Bfrtip',
                      scrollX = TRUE,
                      fixedColumns = list(leftColumns = 1),
                      
                      # Callbacks
                      rowCallback = lastrow(),
                      fnDrawCallback = DTpagination(),
                      
                      # Button
                      buttons = DTmenuitems(Table_Menu, title)
                    ) )
          
        })
      })
    })

output$dt <- renderUI({
  
  tagList(lapply(stratsgroups, function(i) {
    
    box(dataTableOutput(session$ns(paste0('T_', i))), width = 12)
    
  }))
  
})

0 个答案:

没有答案
相关问题