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

Shiny 在循环中显示数据表的有效方法,shiny,dt,Shiny,Dt,我有一个数据集,其中有一个名为“Variables”的变量。我想在Shining app中显示列“Variables”的每个唯一值的表。请参见下图的快照。我通过lappy()使用它。它很好用。但是显示表格需要一些时间,因为我有将近20张表格。每个表有近15列。除了lappy()之外,还有其他更好的循环方式吗 stratsgroup%distinct(变量)%%>%pull() 观察({ lappy(层组,函数(x){ 输出[[paste0('T_',x)]]%dplyr::filter(变量=

我有一个数据集,其中有一个名为“Variables”的变量。我想在Shining app中显示列“Variables”的每个唯一值的表。请参见下图的快照。我通过lappy()使用它。它很好用。但是显示表格需要一些时间,因为我有将近20张表格。每个表有近15列。除了lappy()之外,还有其他更好的循环方式吗

stratsgroup%distinct(变量)%%>%pull()
观察({
lappy(层组,函数(x){
输出[[paste0('T_',x)]]%dplyr::filter(变量==x)%>%select(2:(ncol(详细)-2))%>%
重命名(!!x:=!!符号(“类别”))%>%
# ==============
#DT选项
# ==============
数据表(rownames=FALSE,
extensions=c('Buttons','FixedColumns'),selection='none',
选项=列表(
columnDefs=list(list(className='dt center',targets='u all'),
分页=T,
pageLength=10,
搜索=假,
排序=F,
info=F,
dom='Bfrtip',
scrollX=TRUE,
fixedColumns=list(leftColumns=1),
#回调
rowCallback=lastrow(),
fnDrawCallback=DTpagination(),
#钮扣
按钮=DTmenuitems(表格菜单,标题)
) )
})
})
})

输出$dt不确定是否要加速,但看看您的代码,我认为没有必要观察
<代码>渲染数据表
将作出反应。谢谢。我还在renderUI()中应用循环,然后传递UI1输出。看来这就是问题所在。我可以一个接一个地传递uioutput(无需手动输入UI)吗?我更新了代码供你参考
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)
    
  }))
  
})