checkboxGroupInput для фильтрации данных - PullRequest
0 голосов
/ 02 октября 2018

У меня проблемы с тем, чтобы мои поля фильтров действительно фильтровали данные.Ниже приведен образец данных и код.Поля отображаются нормально и доступны для нажатия, но когда вы устанавливаете флажок, они не фильтруют данные.

Name   Grade Test1 Test2  
Sam    1st   88    92  
Carla  2nd   82    88  
Matt   1st   90    76  
Kelsey 3rd   92    96




gradelist <- ("1st", "2nd", "3rd")

часть пользовательского интерфейса:

checkboxGroupInput("grade", "Filter by Grade", gradelist)

часть сервера:

output$gradetable <- DT::renderDataTable({  
DT::datatable(testscores[input$grade,])
})

1 Ответ

0 голосов
/ 02 октября 2018
library(shiny)
library(dplyr)
library(DT)

ui <- fluidPage(

    fluidRow(

      checkboxGroupInput("grade", "Filter by Grade", c("1st", "2nd", "3rd"), selected = "1st")

    ),
    fluidRow(
      column(12,
             dataTableOutput('gradetable')
      )
    )

)


server <- function(input, output) {

  testscores <- structure(list(Name = structure(c(4L, 1L, 3L, 2L), .Label = c("Carla", 
                                                                              "Kelsey", "Matt", "Sam"), class = "factor"), Grade = structure(c(1L, 
                                                                                                                                               2L, 1L, 3L), .Label = c("1st", "2nd", "3rd"), class = "factor"), 
                               Test1 = c(88L, 82L, 90L, 92L), Test2 = c(92L, 88L, 76L, 96L
                               )), .Names = c("Name", "Grade", "Test1", "Test2"), class = "data.frame", row.names = c(NA, 
                                                                                                                      -4L))

  # product definition
  output$gradetable <- renderDataTable({  

    testscores %>% filter(Grade == input$grade) %>% datatable

  })

}

# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...