selectInput function

Create a select list input control

Create a select list input control

Create a select list that can be used to choose a single or multiple items from a list of values.

selectInput( inputId, label, choices, selected = NULL, multiple = FALSE, selectize = TRUE, width = NULL, size = NULL ) selectizeInput(inputId, ..., options = NULL, width = NULL)

Arguments

  • inputId: The input slot that will be used to access the value.

  • label: Display label for the control, or NULL for no label.

  • choices: List of values to select from. If elements of the list are named, then that name --- rather than the value --- is displayed to the user. It's also possible to group related inputs by providing a named list whose elements are (either named or unnamed) lists, vectors, or factors. In this case, the outermost names will be used as the group labels (leveraging the <optgroup> HTML tag) for the elements in the respective sublist. See the example section for a small demo of this feature.

  • selected: The initially selected value (or multiple values if multiple = TRUE). If not specified then defaults to the first value for single-select lists and no values for multiple select lists.

  • multiple: Is selection of multiple items allowed?

  • selectize: Whether to use selectize.js or not.

  • width: The width of the input, e.g. '400px', or '100%'; see validateCssUnit().

  • size: Number of items to show in the selection box; a larger number will result in a taller box. Not compatible with selectize=TRUE. Normally, when multiple=FALSE, a select input will be a drop-down list, but when size is set, it will be a box instead.

  • ...: Arguments passed to selectInput().

  • options: A list of options. See the documentation of selectize.js(https://selectize.dev/docs/usage) for possible options (character option values inside base::I() will be treated as literal JavaScript code; see renderDataTable()

    for details).

Returns

A select list control that can be added to a UI definition.

Details

By default, selectInput() and selectizeInput() use the JavaScript library selectize.js (https://selectize.dev/) instead of the basic select input element. To use the standard HTML select input element, use selectInput() with selectize=FALSE.

In selectize mode, if the first element in choices has a value of "", its name will be treated as a placeholder prompt. For example: selectInput("letter", "Letter", c("Choose one" = "", LETTERS))

Performance note: selectInput() and selectizeInput() can slow down significantly when thousands of choices are used; with legacy browsers like Internet Explorer, the user interface may hang for many seconds. For large numbers of choices, Shiny offers a "server-side selectize" option that massively improves performance and efficiency; see this selectize article

on the Shiny Dev Center for details.

Note

The selectize input created from selectizeInput() allows deletion of the selected option even in a single select input, which will return an empty string as its value. This is the default behavior of selectize.js. However, the selectize input created from selectInput(..., selectize = TRUE) will ignore the empty string value when it is a single choice input and the empty string is not in the choices argument. This is to keep compatibility with selectInput(..., selectize = FALSE).

Server value

A vector of character strings, usually of length 1, with the value of the selected items. When multiple=TRUE and nothing is selected, this value will be NULL.

Examples

## Only run examples in interactive R sessions if (interactive()) { # basic example shinyApp( ui = fluidPage( selectInput("variable", "Variable:", c("Cylinders" = "cyl", "Transmission" = "am", "Gears" = "gear")), tableOutput("data") ), server = function(input, output) { output$data <- renderTable({ mtcars[, c("mpg", input$variable), drop = FALSE] }, rownames = TRUE) } ) # demoing group support in the `choices` arg shinyApp( ui = fluidPage( selectInput("state", "Choose a state:", list(`East Coast` = list("NY", "NJ", "CT"), `West Coast` = list("WA", "OR", "CA"), `Midwest` = list("MN", "WI", "IA")) ), textOutput("result") ), server = function(input, output) { output$result <- renderText({ paste("You chose", input$state) }) } ) }

See Also

updateSelectInput() varSelectInput()

Other input elements: actionButton(), checkboxGroupInput(), checkboxInput(), dateInput(), dateRangeInput(), fileInput(), numericInput(), passwordInput(), radioButtons(), sliderInput(), submitButton(), textAreaInput(), textInput(), varSelectInput()

  • Maintainer: Winston Chang
  • License: GPL-3 | file LICENSE
  • Last published: 2024-12-14