在 Shiny 中,我只想在 UI 加载期间更新一次 SelectInput()

In Shiny I want to updateSelectInput() only once during UI load

我有一个下拉菜单 (SelectInput),我只想更新一次并在上传 UI 期间以编程方式加载项目列表。我把它放在渲染函数中,但问题是它一次又一次地重置。

selectInput 具有允许您设置初始状态的参数。在这些参数中,您可以使用 choices 来提供选项,使用 selected 来设置默认值。请 运行 ?shiny::selectInput 了解更多详情。

如果您想在响应上下文中根据用户交互更新它,在 server 端呈现它或最好使用 updateSelectInput 会有所帮助。

这是一个最小的例子:

library(shiny)

ui <- fluidPage(
  selectInput(
    inputId = "digits_input", 
    label = "Digits:", 
    choices = 0:9
    ## other arguments with default values:
    # selected = NULL,
    # multiple = FALSE,
    # selectize = TRUE, 
    # width = NULL, 
    # size = NULL
  ),

  selectInput(
    inputId = "letters_input", 
    label = "Lower case letters:", 
    choices = letters,
    selected = c("a", "b", "c"), # initially selected items 
    multiple = T # to be able to select multiple items
  ),

  actionButton(
    inputId = "update",
    label = "Capitalize"
  )

)

server <- function(session, input, output) {
  observeEvent(input$update, {
    updateSelectInput(
      session,
      inputId = "letters_input",
      label = "Upper case letters:",
      choices = LETTERS,
      selected = c("A", "B", "C")
    )
  })
}

shinyApp(ui = ui, server = server)