varSelectInput
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). |
Value
-
A variable select list control that can be added to a UI definition.
Description
Create a select list that can be used to choose a single or multiple items from the column names of a data frame.
Details
The resulting server input
value will be returned as:
- a symbol if
multiple = FALSE
. Theinput
value should be used with rlang's!!
. For example,ggplot2::aes(!!input$variable)
. - a list of symbols if
multiple = TRUE
. Theinput
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 todplyr::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
.
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)
.
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)
# }
# )
## ---------------------------------------------
}
See also
Other input elements: actionButton
,
checkboxGroupInput
,
checkboxInput
, dateInput
,
dateRangeInput
, fileInput
,
numericInput
, passwordInput
,
radioButtons
, selectInput
,
sliderInput
, submitButton
,
textAreaInput
, textInput