Search code examples
rshinydatasetdashboard

SliderInput and SelectInput in Shiny App not working


Can someone please help me in solving following Shiny App query of sliderinput and selectinput on mtcars dataset. I shall be extremely grateful.

library(shiny)
library(DT)

ui

ui <- fluidPage(titlePanel("mtcars table"),
            sidebarLayout(
              sidebarPanel(

                column(width = 5,
                       selectInput(inputId = "gear",
                                   label = "gear:",
                                   choices = c("All",
                                               unique(as.character(mtcars$gear))))),

                column(width = 10,
                       sliderInput(inputId = "am",
                                   label = "am:",
                                   min = 0,
                                   max = 1,
                                   value = c(0,1),
                                   step = 1)),


                column(width = 10,
                       sliderInput(inputId = "hp",
                                   label = "hp:",
                                   min = 52,
                                   max = 335,
                                   value = c(52,335),
                                   step = 1)

                )),

              mainPanel ( 
                DT::dataTableOutput("table"))))

server

server<-function(input, output) {

output$table <- DT::renderDataTable(DT::datatable({
data <- mtcars

ifelse(test = input$gear != 'All', yes =data<- data[data$gear == input$gear,], 0)
data<-data[data$am == input$am,] 
data<-data[data$hp==input$hp,]

data
}))

}

shinyApp(ui = ui, server = server)

Solution

  • library(shiny);
    library(DT)
    
    ui <- fluidPage(titlePanel("mtcars table"), sidebarLayout( sidebarPanel(
    
      column(width = 5,
             selectInput(inputId = "gear",
                         label = "gear:",
                         choices = c("All" = 0,
                                     unique(as.character(mtcars$gear))))),
    
      column(width = 10,
             selectInput(inputId = "am",
                         label = "am:",
                         choices = unique(as.character(mtcars$am)))),
    
    
      column(width = 10,
             sliderInput(inputId = "hp",
                         label = "hp:",
                         min = 52,
                         max = 335,
                         value = c(52,335),
                         step = 1)
    
      )),
    
      mainPanel ( 
        DT::dataTableOutput("table"))))
    
    
    server<-function(input, output) {
    
      output$table <- DT::renderDataTable(DT::datatable({ 
    
      data <- mtcars
    
      if(input$gear != 0){
        data<-data[data$gear == input$gear, ]
      }
      data<-data[data$am %in%  input$am,] 
      data<-data[data$hp >= input$hp[[1]] & data$hp <= input$hp[[2]],]
    
    
      data
      }))
    
    }
    
    shinyApp(ui = ui, server = server)