shinyfilters

Overview

shinyfilters makes it easy to create interdependent filters directly from data.frames.

Installation

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'))

Quickstart

Build interdependent filters in 3 steps:

  1. Create the filters from a data.frame:
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
  1. Place the filters in your ui:
# pak::pak(c("bslib", "DT"))
library(bslib)
library(DT)
library(shiny)

ui <- page_sidebar(
    sidebar = sidebar(
        filters
    ),
    DTOutput("data")
)
  1. Place the filters in your server:
server <- function(input, output, session) {
    sidebar <- shinyfilters_server(filters)
    output$data <- renderDT(datatable(sidebar$filtered))
}

Then run your app:

shinyApp(ui, server)

Going further

See vignette("shinyfilters") for the full tour.