Функция dropdownButton
из shinyWidgets
великолепна, потому что я могу использовать ее, чтобы легко создавать Check / Uncheck все опции в checkboxGroupInput
, как this .
Однако, скажем, я хочу соединить два (или более) из этих dropdownButton
в другой dropdownButton
.Я не могу заставить это работать.Вот моя попытка.(Я создаю элементы ui
в сценарии server.R
, потому что в моем реальном проекте мне нужно, чтобы они работали таким образом.)
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
titlePanel("Dropsdowns in your Dropdowns"),
sidebarLayout(sidebarPanel(
uiOutput("io_c1"),
uiOutput("io_c2"),
uiOutput("io_combine")
),
mainPanel())
)
server <- function(input, output, session) {
## drop down 1 items ##
# drop down 1 choices
c1 <- checkboxGroupInput(
inputId = "check1",
label = "pick carb",
choices = unique(mtcars$carb),
selected = unique(mtcars$carb)
)
# select all / none drop down 1
sa1 <- actionButton(inputId = "c1_check_all",
label = "(un)select all")
# set up observe on check box 1
observeEvent(input$c1_check_all, {
if (is.null(input$check1)) {
updateCheckboxGroupInput(
session = session,
inputId = "check1",
selected = unique(mtcars$carb)
)
} else {
updateCheckboxGroupInput(
session = session,
inputId = "check1",
selected = ""
)
}
})
# put all / none button and check box 1 into a dropdownbutton
output$io_c1 <- renderUI({
dropdownButton(sa1,
c1,
circle = FALSE,
label = "Carbs",
status = "default")
})
## drop down 2 items ##
# drop down 2 choices
c2 <- checkboxGroupInput(
inputId = "check2",
label = "pick gear",
choices = unique(mtcars$gear),
selected = unique(mtcars$gear)
)
# select all / none drop down 2
sa2 <- actionButton(inputId = "c2_check_all",
label = "(un)select all")
# set up observe on check box 2
observeEvent(input$c2_check_all, {
if (is.null(input$check2)) {
updateCheckboxGroupInput(
session = session,
inputId = "check2",
selected = unique(mtcars$gear)
)
} else {
updateCheckboxGroupInput(
session = session,
inputId = "check2",
selected = ""
)
}
})
# put all / none button and check box 2 into a dropdownbutton
output$io_c2 <- renderUI({
dropdownButton(sa2,
c2,
circle = FALSE,
label = "Gears",
status = "default")
})
## now try to make this all one thing ##
d1 <- dropdownButton(sa1,
c1,
circle = FALSE,
label = "Carbs",
status = "default")
d2 <- dropdownButton(sa2,
c2,
circle = FALSE,
label = "Gears",
status = "default")
output$io_combine <-
renderUI(dropdownButton(
d1,
d2,
circle = FALSE,
label = "Drop Downs Here",
status = "default"
))
}
shinyApp(ui = ui, server = server)
Так что я получил эту работу с каждым отдельным dropdownButton
s, но когда я пытаюсь собрать результаты в единое целое в третьей части кода, это не работает.dropdownButton
создан, и два отдельных dropdownButton
находятся там, но они не отвечают вообще.Есть идеи, что я могу упустить?