--- title: "Use kable in Shiny" output: html_document vignette: > %\VignetteIndexEntry{Use kable in Shiny} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` Since the output is just HTML, it's very easy to use `kable` and `kableExtra` in the Shiny environment. For example: ```{r, eval = FALSE} library(shiny) ui <- fluidPage( # Application title titlePanel("mtcars"), sidebarLayout( sidebarPanel( sliderInput("mpg", "mpg Limit", min = 11, max = 33, value = 20) ), mainPanel( tableOutput("mtcars_kable") ) ) ) server <- function(input, output) { library(dplyr) library(kableExtra) output$mtcars_kable <- function() { req(input$mpg) mtcars %>% mutate(car = rownames(.)) %>% select(car, everything()) %>% filter(mpg <= input$mpg) %>% knitr::kable("html") %>% kable_styling("striped", full_width = F) %>% add_header_above(c(" ", "Group 1" = 5, "Group 2" = 6)) } } # Run the application shinyApp(ui = ui, server = server) ``` You can copy/paste the code above or simply run: ```{r, eval=FALSE} shiny::runGist("https://gist.github.com/haozhu233/9e675e1a8a1bb4744f9ebc9246a2366b") ```