shinyServer(function(input, output, session) {
  observe({
    # We'll use the input$controller variable multiple times, so save it as x
    # for convenience.
    x <- input$controller
    # Create a list of new options, where the name of the items is something
    # like 'option label x 1', and the values are 'option-x-1'.
    s_options <- list()
    s_options[[sprintf("option label %d 1", x)]] <- sprintf("option-%d-1", x)
    s_options[[sprintf("option label %d 2", x)]] <- sprintf("option-%d-2", x)
    # Change values for input$inSelect
    updateSelectInput(session, "inSelect", choices = s_options)
    # Can also set the label and select an item (or more than one if it's a
    # multi-select)
    updateSelectInput(session, "inSelect2",
      label = paste("Select label", x),
      choices = s_options,
      selected = sprintf("option label %d 2", x)
    )
  })
})Run the code above in your browser using DataLab