Group of mutually dependent pickerInput for filtering data.frame's columns.
pickerGroupUI(
id,
params,
label = NULL,
btn_label = "Reset filters",
options = list(),
inline = TRUE
)
pickerGroupServer(input, output, session, data, vars)Module's id.
A named list of parameters passed to each pickerInput, you can use :
inputId (obligatory, must be variable name), label, placeholder.
Character, global label on top of all labels.
Character, reset button label.
See pickerInput options argument.
If TRUE (the default), pickerInputs are horizontally positioned, otherwise vertically.
standard shiny input.
standard shiny output.
standard shiny session.
a data.frame, or an object that can be coerced to data.frame.
character, columns to use to create filters,
must correspond to variables listed in params.
a reactive function containing data filtered.
if (interactive()) {
library(shiny)
library(shinyWidgets)
data("mpg", package = "ggplot2")
ui <- fluidPage(
fluidRow(
column(
width = 10, offset = 1,
tags$h3("Filter data with picker group"),
panel(
pickerGroupUI(
id = "my-filters",
params = list(
manufacturer = list(inputId = "manufacturer", label = "Manufacturer:"),
model = list(inputId = "model", label = "Model:"),
trans = list(inputId = "trans", label = "Trans:"),
class = list(inputId = "class", label = "Class:")
)
), status = "primary"
),
DT::dataTableOutput(outputId = "table")
)
)
)
server <- function(input, output, session) {
res_mod <- callModule(
module = pickerGroupServer,
id = "my-filters",
data = mpg,
vars = c("manufacturer", "model", "trans", "class")
)
output$table <- DT::renderDataTable(res_mod())
}
shinyApp(ui, server)
}
### Not inline example
if (interactive()) {
library(shiny)
library(shinyWidgets)
data("mpg", package = "ggplot2")
ui <- fluidPage(
fluidRow(
column(
width = 4,
tags$h3("Filter data with picker group"),
pickerGroupUI(
id = "my-filters",
inline = FALSE,
params = list(
manufacturer = list(inputId = "manufacturer", label = "Manufacturer:"),
model = list(inputId = "model", label = "Model:"),
trans = list(inputId = "trans", label = "Trans:"),
class = list(inputId = "class", label = "Class:")
)
)
),
column(
width = 8,
DT::dataTableOutput(outputId = "table")
)
)
)
server <- function(input, output, session) {
res_mod <- callModule(
module = pickerGroupServer,
id = "my-filters",
data = mpg,
vars = c("manufacturer", "model", "trans", "class")
)
output$table <- DT::renderDataTable(res_mod())
}
shinyApp(ui, server)
}