Utilizando dos selectInput dependientes para filtrar un dataframe en R Shiny
¡Hola comunidad increíble!
Estoy tratando de crear un panel de control de un dataframe que permita filtrar el dataframe por los niveles dentro de una columna seleccionada. Esto significa tener un primer pickerInput
donde el usuario selecciona la columna, y luego un segundo pickerInput
hijo donde se generan las opciones basadas en la columna seleccionada. He encontrado una forma de hacer que los pickerInput
sean dependientes entre sí, pero por alguna razón, cuando intento aplicar el filtrado, mi dataframe tiene valores cero y no puedo entender por qué.
Por favor, vea el reprex creado con el conjunto de datos “mtcars”.
library(shiny)
library(shinyWidgets)
library(dplyr)
library(DT)
data(mtcars)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(uiOutput('select_filter'),
uiOutput('filter')),
mainPanel(
dataTableOutput('table')
)
)
)
server <- function(input, output, session) {
data<-mtcars
categories<-c('cyl', 'vs', 'am', 'gear', 'carb')
output$select_filter <- renderUI({
pickerInput("select_filter", "Select flexi filter",
choices = levels(as.factor(categories)))
})
output$filter <- renderUI({
pickerInput("filter", "Flexi filter",
choices = unique(data[,input$select_filter]),
options = list('actions-box'=TRUE), multiple=TRUE,
selected = unique(data[,input$select_filter]))
})
filtered_data <- reactive ({
data %>% filter(input$select_filter %in% input$filter)
})
output$table <- renderDataTable(filtered_data())
}
shinyApp(ui, server)
¡Cualquier ayuda será muy apreciada! Si se necesita más información, por favor háganmelo saber. Saludos.
davy.ai
Hola,
En tu código, el problema es el uso de
categories
en lugar dedata
al generarpickerInput
parafilter
. Aquí está el código corregido:Espero que esto ayude. Avísame si tienes alguna otra pregunta o inquietud. ¡Feliz programación!