Checkbox Group Input and Delete Table Output in a Shiny App
Introduction
In this article, we will explore how to create a shiny app that includes functionality to delete a table output when any checkbox group input is selected. The table output is generated based on the selections made in the checkbox group inputs.
Background
Shiny apps are web-based applications built using R and the Shiny framework. They provide an interactive interface for users to interact with data visualizations, statistical models, or other applications. In this article, we will use the shiny app framework to build a simple application that generates a table based on user selections in a checkbox group input.
Prerequisites
To build this application, you need to have R and Shiny installed on your system. You can install these packages using the following command:
install.packages(c("shiny", "DT", "dplyr"))
Creating the Shiny App
Here is an example of a shiny app that includes a checkbox group input and a table output:
library(shiny)
library(DT)
library(dplyr)
ui <- fluidPage(
useShinyjs(),
checkboxGroupInput(inputId = "checkboxGroup1", label = "Checkbox Group 1", choices = list(5.0, 4.6)),
checkboxGroupInput(inputId = "checkboxGroup2", label = "Checkbox Group 2", choices = list(3.4, 3.6)),
checkboxGroupInput(inputId = "checkboxGroup3", label = "Checkbox Group 3", choices = list(0.2, 1.5)),
checkboxGroupInput(inputId = "checkboxGroup4", label = "Checkbox Group 4", choices = list("setosa", "virginica")),
actionButton('action',label = 'Action'),
mainPanel(
dataTableOutput("table1")
)
)
server <- function(input, output) {
filter_data <- eventReactive(input$action, {
data <- iris
data %>%
{if (is.null(input$checkboxGroup1) == FALSE) filter(., Sepal.Length %in% input$checkboxGroup1) else .} %>%
{if (is.null(input$checkboxGroup2) == FALSE) filter(., Sepal.Width %in% input$checkboxGroup2) else .} %>%
{if (is.null(input$checkboxGroup3) == FALSE) filter(., Petal.Width %in% input$checkboxGroup3) else .} %>%
{if (is.null(input$checkboxGroup4) == FALSE) filter(., Species %in% input$checkboxGroup4) else .}
})
obs_checkboxes <- reactive({
list(input$checkboxGroup1,input$checkboxGroup2,input$checkboxGroup3,input$checkboxGroup4)
})
observeEvent(obs_checkboxes(), {
hide("table1")
})
observeEvent(input$action, {
show("table1")
})
output$table1 <- renderDataTable(
filter_data()
)
}
shinyApp(ui = ui, server = server)
Explanation
The above code creates a shiny app with four checkbox group inputs and one action button. The table output is generated based on the user selections in the checkbox group inputs. When any of the checkbox group inputs are selected, the hide
function is called to hide the table output. When the action button is clicked, the show
function is called to show the table output.
Conclusion
In this article, we explored how to create a shiny app that includes functionality to delete a table output when any checkbox group input is selected. We used the useShinyjs
package to hide and show the table output based on user selections in the checkbox group inputs.
Last modified on 2024-08-05