R: Select variables from a data frame

varSelectInput {shiny} | R Documentation

## Select variables from a data frame

### Description

Create a select list that can be used to choose a single or multiple items from the column names of a data frame.

### Usage

    varSelectInput(inputId, label, data, selected = NULL, multiple = FALSE,
      selectize = TRUE, width = NULL, size = NULL)

    varSelectizeInput(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.
`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 for possible options (character option values inside `I()` will be treated as literal JavaScript code; see `renderDataTable()` for details).

### Details

The resulting server `input` value will be returned as:

- a symbol if `multiple = FALSE`. The `input` value should be used with rlang's `!!`. For example, `ggplot2::aes(!!input$variable)`.

- a list of symbols if `multiple = TRUE`. The `input` value should be used with rlang's `!!!` 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)]])`.

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

### Value

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

### 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)`.

### See Also

`updateSelectInput`

Other input elements: `actionButton`, `checkboxGroupInput`, `checkboxInput`, `dateInput`, `dateRangeInput`, `fileInput`, `numericInput`, `passwordInput`, `radioButtons`, `selectInput`, `sliderInput`, `submitButton`, `textAreaInput`, `textInput`

### Examples

    ## Only run examples in interactive R sessions
    if (interactive()) {

    library(ggplot2)

    # single selection
    shinyApp(
      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)

    }

[Package shiny version 1.2.0 Index]