inputId: The input slot that will be used to access the value.
label: Display label for the control, or NULL for no label.
data: A data frame. Used to retrieve the column names as choices for a selectInput()
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 varSelectInput().
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 variable select list control that can be added to a UI definition.
Details
By default, varSelectInput() and selectizeInput() use the JavaScript library selectize.js
(https://selectize.dev/) to instead of the basic select input element. To use the standard HTML select input element, use selectInput() with selectize=FALSE.
Note
The variable selectize input created from varSelectizeInput() 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
The resulting server input value will be returned as:
A symbol if multiple = FALSE. The input value should be used with rlang's rlang::!!(). For example, ggplot2::aes(!!input$variable).
A list of symbols if multiple = TRUE. The input value should be used with rlang's rlang::!!!() to expand the symbol list as individual arguments. For example, dplyr::select(mtcars, !!!input$variabls) which is equivalent to dplyr::select(mtcars, !!input$variabls[[1]], !!input$variabls[[2]],..., !!input$variabls[[length(input$variabls)]]).
Examples
## Only run examples in interactive R sessionsif(interactive()){library(ggplot2)# single selectionshinyApp( ui = fluidPage( varSelectInput("variable","Variable:", mtcars), plotOutput("data")), server =function(input, output){ output$data <- renderPlot({ ggplot(mtcars, aes(!!input$variable))+ geom_histogram()})})# multiple selections## Not run:shinyApp( ui = fluidPage( varSelectInput("variables","Variable:", mtcars, multiple =TRUE), tableOutput("data")), server =function(input, output){ output$data <- renderTable({if(length(input$variables)==0) return(mtcars) mtcars %>% dplyr::select(!!!input$variables)}, rownames =TRUE)})## End(Not run)}