【发布时间】:2021-03-08 09:46:35
【问题描述】:
我已经实现了带有全/无复选框的两列。现在我希望能够在应用启动时使用selected_states 预先选择一些复选框。
使用selected = 的正常方法由于全/无选择器的实现方式而失败。
如何保持全/无功能并允许预选复选框?
library(shiny)
library(shinyWidgets)
library(tidyverse)
df <- tibble(
state = c("Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut", "Delaware", "Florida",
"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa",
"Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts",
"Michigan", "Minnesota", "Mississippi", "Missouri", "Montana",
"Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico",
"New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
"Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
"Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming")
)
selected_states <- c("Alabama", "Alaska","Minnesota")
ui <- fluidPage(
wellPanel(
checkboxInput('all_none', 'All/None'),
tags$label("Choose :"),
fluidRow(
column(
width = 4,
checkboxGroupInput(
selected = selected_states,
inputId = "checka",
label = NULL,
choices = df$state[1:13]
)
),
column(
width = 4,
checkboxGroupInput(
selected = selected_states,
inputId = "checkb",
label = NULL,
choices = df$state[14:25]
)
)
)
),
textOutput("selected")
)
server <- function(input, output, session) {
observe({
updateCheckboxGroupInput(
session, 'checka', choices = df$state[1:13],
selected = if (input$all_none == TRUE) df$state
)
})
observe({
updateCheckboxGroupInput(
session, 'checkb', choices = df$state[14:25],
selected = if (input$all_none == TRUE) df$state
)
})
output$selected <- renderText({
all_selected <- paste(c(input$checka, input$checkb), collapse = ", ")
})
}
shinyApp(ui, server)
【问题讨论】: