Как использовать updateSelectInput во flexdashboard?
Я хотел бы изменить значения поля ввода на основе другого поля ввода.
С R Shiny доступен метод: updateSelectInput. Но я не уверен, как использовать его в flexdashboard.
1 ответ
Это довольно поздно, но тоже вполне возможно.
Если это твой первый selectInput()
raw_data <- mpg
selectInput(
"manufacturer",
label = "Select manufacturer",
choices = c("All", sort(unique(raw_data$manufacturer)))
)
Вы можете попробовать любой из этих подходов. Это в целом меньше кода:
renderUI({
df <-
raw_data %>%
filter(
manufacturer == input$manufacturer |
input$manufacturer == "All"
)
selectInput(
"model",
label = "Select model",
choices = c("All", sort(unique(df$model)))
)
})
Или observeEvent()
. Я думаю, что это экономит производительность, поскольку он смотрит только на один вход, но это не большая разница.
selectInput(
"model",
label = "Select model",
choices = c("All", sort(unique(raw_data$model)))
)
observeEvent(input$manufacturer, {
df <-
raw_data %>%
filter(
manufacturer == input$manufacturer |
input$manufacturer == "All"
)
updateSelectInput(
session = session,
inputId = "model",
choices = c("All", sort(unique(df$model)))
)
})
Почему этот код не будет работать внутри: значение selectInput из "book" меняет диапазон selectInput из "chapter"
selectInput("book", label = "libro", choices = c("dq1605", "dq1615"), selected="dq1605")
selectInput("chapter", label = "capítulo",choices = 1:54, selected=0)
observeEvent(input$book, {
y <- input$book
if (is.null(y)) y <- "dq1605"
chs <- if(y=="dq1605") 1:54 else 1:74
updateSelectInput(session,"chapter",choices = chs)
})