Я знаю, что на StackExchange есть очень похожий вопрос (pickerInput по умолчанию выбирает все варианты), однако решение не применимо к моей проблеме. У меня есть updatePickerInput, который основан на двух входах. на updatePickerInput у меня есть кнопки selectAll и clearAll от shiningWidgets. Я хочу, чтобы selectAll был значением по умолчанию, но, поскольку он динамический, я не знаю, как передать мой выбор в выбранный вариант.
Вот мой соответствующий код пользовательского интерфейса:
radioButtons(inputId = 'selected_group', label = 'group', choices = '')
Это мой код наблюдаемого события:
observeEvent(c(input$selected_tab,input$selected_group),{
req(input$selected_group)
updatePickerInput(
session,
'selected_subgroup',
choices = df %>%
filter(tab == input$selected_tab) %>%
filter(group == input$selected_group) %>%
select(subgroup) %>%
distinct(subgroup) %>%
arrange(subgroup) %>%
.[[1]]
)
})
Этот df фильтруется позже в операторе reactive(). Здесь он нефильтрованный.
Пожалуйста, смотрите пример в моем ответе ниже для разъяснения.
Чтобы все параметры были выбраны динамически, вам нужно передать одну и ту же информацию в аргументы updatePickerInput
choices
и selected
:
library(shiny)
library(datasets)
library(shinyWidgets)
statesDF <- data.frame(region = state.region, name = state.name, area = state.area, stringsAsFactors = FALSE)
ui <- fluidPage(
radioButtons(inputId = 'selected_group', label = 'group', choices = unique(statesDF$region)),
pickerInput(inputId = 'selected_subgroup', label = 'subgroup', choices = NULL, selected = NULL, multiple = TRUE)
)
server <- function(input, output, session) {
filteredChoices <- reactive({
statesDF$name[statesDF$region == input$selected_group]
})
observeEvent(filteredChoices(), {
updatePickerInput(session, inputId = 'selected_subgroup', label = 'subgroup', choices = filteredChoices(), selected = filteredChoices())
})
}
shinyApp(ui = ui, server = server)
Передать тот же отфильтрованный
df
, который вы используете для своего выбора,selected
?