R 如何一次显示表的反应数(结果不同)?闪亮应用

R 如何一次显示表的反应数(结果不同)?闪亮应用,r,shiny,R,Shiny,根据我的选择显示表的数量时出现问题。我想做的是,在一列中呈现尽可能多的表以及它的唯一记录,并逐个显示它们以及每个子组的结果 如果我与大家分享这个例子,会更容易: dashboardHeader(title = "My App"), dashboardSidebar(id="", sidebarMenu( menuItem(strong("Tab1"), tabName = "T1", icon = icon("table")))), dashboardBody(

根据我的选择显示表的数量时出现问题。我想做的是,在一列中呈现尽可能多的表以及它的唯一记录,并逐个显示它们以及每个子组的结果

如果我与大家分享这个例子,会更容易:


  dashboardHeader(title = "My App"),

  dashboardSidebar(id="", sidebarMenu(

    menuItem(strong("Tab1"), tabName = "T1", icon = icon("table")))),

  dashboardBody(

    tabItems(

      tabItem(
        tabName="T1",
              fluidRow(tableOutput('tables'))
        )
      )
    )
  )



server <- function(input, output) {

  observeEvent(length(unique(mtcars$gear)), {
    lapply(1:length(unique(mtcars$gear)), 
           function(i){
             output[[paste0('table', i)]]<-renderTable({

               filtered<-mtcars

               a<-list()

               for (j in unique(filtered$gear)){

                 subd <- filtered[filtered$gear == j,] 

                 a[[j]]<-subd

                 }

               for(i in 1:length(a)){
                 a[[i]]
               }

              a[[3]]

             })
           })
  })

  output$tables <- renderUI({
    lapply(1:length(unique(mtcars$gear)), 
           function(i) {
             uiOutput(paste0('table', i))
           })
  })


}

shinyApp(ui = ui, server = server)

仪表板标题(title=“我的应用”),
仪表板侧栏(id=),侧栏菜单(
菜单项(strong(“Tab1”),tabName=“T1”,icon=icon(“table”),
仪表板主体(
tabItems(
tabItem(
tabName=“T1”,
fluidRow(tableOutput('tables'))
)
)
)
)

服务器您可以使用
split
根据数据框中某个因子的级别创建表列表。在此基础上,对
renderUI
稍加修改,即可获得所需的结果。还请注意,我将
表格
输出更改为
uiOutput
,而不是
tableOutput
,因为您使用
renderUI
填充了表格

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "My App"),

  dashboardSidebar(id = "", sidebarMenu(
    menuItem(strong("Tab1"), tabName = "T1", icon = icon("table"))
  )),

  dashboardBody(tabItems(tabItem(
    tabName = "T1",
    fluidRow(uiOutput('tables'))
  )))
)

server <- function(input, output) {

  tables_in_list <- split(x = mtcars, f = mtcars$gear)

  output$tables <- renderUI({
    lapply(seq_along(tables_in_list), function(i)
      renderTable(tables_in_list[[i]]))
  })
  }

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinydashboard)
用户界面