shinyfilters makes it easy to create interdependent filters directly from data.frames.
The latest release is available on CRAN:
# install.packages("pak")
pak::pak("shinyfilters")
Or, you can install the development version:
# pak::pak("joshwlivingston/shinyfilters")
install.packages("shinyfilters", repos = c('https://joshwlivingston.r-universe.dev', 'https://cloud.r-project.org'))
Build interdependent filters in 3 steps:
library(shinyfilters)
filters <- shinyfilters(nyc_flights)
filters
#> <shinyfilters> • 7 filters
#>
#> Filters
#> date <date> dateRangeInput
#> carrier <chr> selectizeInput
#> origin <fct> selectizeInput
#> dest <chr> selectizeInput
#> dep_delay <dbl> sliderInput
#> distance <dbl> sliderInput
#> delayed <lgl> selectizeInput
# pak::pak(c("bslib", "DT"))
library(bslib)
library(DT)
library(shiny)
ui <- page_sidebar(
sidebar = sidebar(
filters
),
DTOutput("data")
)
server <- function(input, output, session) {
sidebar <- shinyfilters_server(filters)
output$data <- renderDT(datatable(sidebar$filtered))
}
Then run your app:
shinyApp(ui, server)
See vignette("shinyfilters") for the full tour.