У меня нет информации о вашем штате / округе (или ее структуре), но этот небольшой пример завершает то, что, я думаю, вы описываете. На заметку:
Сначала необходимо выбрать элемент пользовательского интерфейса select с помощью selectizeInput, а затем обновить его содержимое с помощью updateSelectizeInput. Таким образом, вам нужны обе функции, но для этого небольшого репрезента я создал updateSelectizeInput, хотя, возможно, поэтому я мог неправильно истолковать то, что вы хотите сделать.
В этом примере округ selectInput получает реактивный объект поскольку его выбор вводится на основе подстановки списка округов выбором состояния пользователя, поэтому вход выбора округа будет обновляться, когда пользователь переключается между состояниями.
Я также обернул вход округа условной панелью - этот ввод будет только показать, выбрал ли пользователь состояние с состоянием selectInput.
UPDATE * добавить 'req (length (input $ state)> 0)', чтобы реактив не выполнялся на сервере, пока не выбрано состояние
library(shiny)
library(tidyverse)
ui <- fluidPage(
pageWithSidebar(
headerPanel("My chart"),
sidebarPanel(
uiOutput("sel_state"),
conditionalPanel(condition = "input.state.length > 0",
uiOutput("sel_county")
)
),
mainPanel(
)
)
)
server <- function(input, output) {
#create example of data structure
df <- structure(list(state = c("Washington", "Washington", "Washington",
"Illinois", "Washington", "California"), county = c("Snohomish",
"Snohomish", "Snohomish", "Cook", "Snohomish", "Orange")), row.names =
c(NA, 6L), class = "data.frame")
#pull out unique state names
state_list <- as.character(unique(df$state))
#filter for counties only in desired state and pull column to vector
selected_state_counties <- reactive({
req(length(input$state) > 0)
df %>%
filter(state == input$state) %>%
pull(county) %>%
as.character()
})
output$sel_state <- renderUI({
selectizeInput('state', 'Select a State', choices=c("Choose One" = "", state_list))
})
output$sel_county <- renderUI({
selectizeInput('county', 'Select a County', choices=c("Choose One" = "", selected_state_counties()))
})
}
# Run the application
shinyApp(ui = ui, server = server)