我们有一个闪亮的应用程序,在ui上有四个selectizeInput
。我们的目标是selectizeInput
的选择相互依赖,即在特定selectizeInput
中做出一个或多个选择。
也许有人有同样的问题。
非常感谢。
以下是一个例子:
# UI====================
overviewUI <- function(id){
ns <- NS(id)
tagList(
tags$head(tags$style(HTML(".shiny-notification {position:fixed; top: calc(50%);; left: calc(50%);;}"))),
fluidRow(
box(title="Controls", status = "warning", width=12, collapsible=TRUE, collapsed=TRUE,
column(width=3,
uiOutput(ns("String_1")),
uiOutput(ns("String_2")),
uiOutput(ns("String_3"))),
column(width=3,
selectizeInput(ns("String_4"),"Select String_4", choices=unique(data_scu$String_4), multiple=TRUE, options=NULL)
# Function====================
scu_overview <- function(input, output, session, data){
filtered_data <- reactive({
sel_String_1 <- if (is.null(input$String_1)) unique(data$String_1) else input$String_1
sel_String_2 <- if (is.null(input$String_2)) unique(data$String_2) else input$String_2
sel_String_3 <- if (is.null(input$String_3)) unique(data$String_3) else input$String_3
sel_String_4 <- if (is.null(input$String_4)) unique(data$String_4) else input$String_4
temp <- data[String_1 %in% sel_String_1 & String_2 %in% sel_String_2 & String_3 %in% sel_String_3 & String_4%in% sel_String_4 ]
temp[,':='(quarter=paste0("Q", quarter(data$month)," ", format(year(data$month),format ="%y")),year=year(data$month))]})
# Build GUI=========
output$ctr_String_1 <- renderUI({
ns <- session$ns
selectizeInput(ns("String_1"),"Select String_1", choices=unique(filtered_data()$String_1), multiple=TRUE, options=NULL)
})
output$ctr_String_2 <- renderUI({
ns <- session$ns
selectizeInput(ns("String_2"), "Select String_2", choices=unique(filtered_data()$String_2), multiple=TRUE, options=NULL)
})
output$ctr_String_3 <- renderUI({
ns <- session$ns
selectizeInput(ns("String_3"),"Select String_3", choices=unique(filtered_data()$String_3), multiple=TRUE, options=NULL)
})