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命令可能是实现它的一种方法,我只是不确定如何实际实现。这是很大的帮助。非常感谢。