Как использовать 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)
})
Другие вопросы по тегам