R 在Shiny中使用动态UI更新桶列表(使用可复制的样本)

R 在Shiny中使用动态UI更新桶列表(使用可复制的样本),r,shiny,R,Shiny,我正在构建一个闪亮的应用程序,我想在其中使用一个桶列表。我希望使用该桶列表是动态的,因为桶列表的选项仅是上一个菜单选项中所选部门的工厂。因此,换句话说,当选择一个部门时,桶列表上的选项将仅更改为特定部门的那些工厂 下面是这个项目的一个示例应用程序。基本上,我所希望的是,当用户过滤分区时,第一列列表上的标签是动态的,并且会发生变化。我做了一些研究,但完全被困在这里。我想这并不是很难做到,但我被难倒了。非常感谢您的帮助 库(闪亮) 图书馆(tidyverse) 图书馆(DT) 图书馆(shinyda

我正在构建一个闪亮的应用程序,我想在其中使用一个桶列表。我希望使用该桶列表是动态的,因为桶列表的选项仅是上一个菜单选项中所选部门的工厂。因此,换句话说,当选择一个部门时,桶列表上的选项将仅更改为特定部门的那些工厂

下面是这个项目的一个示例应用程序。基本上,我所希望的是,当用户过滤分区时,第一列列表上的标签是动态的,并且会发生变化。我做了一些研究,但完全被困在这里。我想这并不是很难做到,但我被难倒了。非常感谢您的帮助

库(闪亮)
图书馆(tidyverse)
图书馆(DT)
图书馆(shinydashboard)
图书馆(shinythemes)
图书馆(可分类)
#此示例的数据帧:

数据如果我答对了,那么可以通过
uiOutput
renderUI
实现您想要的结果,如下所示:

library(shiny)
library(tidyverse)
library(DT)
library(shinydashboard)
library(shinythemes)
library(sortable)

#dataframe for this sample:
data<- data.frame(division = c(1,1,1,1,2,2,2,2,3,3,3,3),
                  plant = c("a", "b", "c", "d", "a", "x", "m", "p", "c", "x", "a", "b"),
                  value = c(12,15,23,15,14,64,63,12,4, 18, 31, 1))

# Define UI for application that draws a histogram
ui <- dashboardPage(
  dashboardHeader(title = "Test App"),
  dashboardSidebar(
    sidebarMenu(
      menuItem("Data", tabName = "data"),
      menuItem("Drag and Drop", tabName = "drag")
    )
  ),
  dashboardBody(
    sidebarPanel(width = 3,
                 selectInput("division", "Select Division:", choices = c("all", 1,2,3))
                 
    ),
    
    tabItems(
      tabItem(tabName = "data",
              box(title = "Data", width = 9, status = "primary", height = "auto",
                  solidHeader = T, dataTableOutput("preview1"))
      ),
      tabItem(tabName = "drag",
              uiOutput("bucket")
      )
    )
  )
  
)
# Define server logic required to draw a histogram
server <- function(input, output) {
  filtered<- reactive({
    if(input$division == "all"){
      data
    } else{
      data %>% filter(division == input$division)
    }
  })
  
  output$bucket <- renderUI({
    bucket_list(
      header = "Interactive bucket list",
      group_name = "bucket_list_group",
      orientation = "horizontal",
      add_rank_list(text = "Bucket 1",
                    labels = unique(filtered()$plant), input_id = "default"),
      add_rank_list(text = "bucket 2",
                    labels = NULL,
                    input_id = "bucket2")
    )  
  })
  
  output$preview1<-renderDataTable(
    datatable(filtered(), options = list(searching = T, pageLength =10, scrollX = T))
  )
}

# Run the application 
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(tidyverse)
图书馆(DT)
图书馆(shinydashboard)
图书馆(shinythemes)
图书馆(可分类)
#此示例的数据帧:

那太好了!我不认为这是一个困难的问题。我认为renderUI命令可能是实现它的一种方法,我只是不确定如何实际实现。这是很大的帮助。非常感谢。