Динамическое сверление блестящей приборной панели - PullRequest
0 голосов
/ 04 марта 2019

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

mtcars <- as.data.frame(mtcars )


mtcars$gear <- as.character(mtcars$gear)
mtcars$cyl <- as.character(mtcars$cyl)
mtcars$carbs <- as.character(mtcars$carb)

gear_all <- unique(mtcars$gear)
cyl_all <- unique(mtcars$cyl)
carb_all <- unique(mtcars$carb)


ui <- dashboardPage(skin = "red",
                dashboardHeader(title = "Car_df"),
                dashboardSidebar(sidebarMenu(menuItem("Views", tabName = "tab_01", icon =icon("bar-chart")))),
                dashboardBody(tabItems(
                  tabItem(tabName = "tab_01",
                          fluidRow(column(2, selectInput("gear_id",
                                                         "Gear:",
                                                         c("Gear_All", unique((mtcars$gear))))),
                                   column(2, selectInput("cyl_id",
                                                         "Cylinder:",
                                                         c("Cyl_all",unique(mtcars$cyl)))),
                                   column(2, selectInput("carb_id",
                                                         "Carburetor:",
                                                         c("carb_all",unique(mtcars$carb)))))
                          ))))

server <- function(input, output){
output$table_01 <- renderDT(DT::datatable({
data = mtcars %>% 
  filter(gear %in% input$gear_id & cyl %in% input$cyl_all & carb %in% 
input$carb_id  ) %>% 
  select(gear, cyl, carb, vs) }))}



shinyApp(ui,server)

Я не могу показать таблицу на приборной панели

Заранее спасибо.

1 Ответ

0 голосов
/ 05 марта 2019

В вашем коде есть две ошибки.(1) Нет объявления для dataTableOutput (т.е. table_01) в пользовательском интерфейсе (2) В состоянии фильтра должно быть input$cyl_id (не input$cyl_all).Ниже приведено рабочее решение.

library(shiny)
library(shinydashboard)
library(DT)
library(dplyr)
mtcars <- as.data.frame(mtcars )
mtcars$gear <- as.character(mtcars$gear)
mtcars$cyl <- as.character(mtcars$cyl)
mtcars$carbs <- as.character(mtcars$carb)

gear_all <- unique(mtcars$gear)
cyl_all <- unique(mtcars$cyl)
carb_all <- unique(mtcars$carb)

ui <- dashboardPage(skin = "red",
                    dashboardHeader(title = "Car_df"),
                    dashboardSidebar(sidebarMenu(menuItem("Views", tabName = "tab_01", icon = icon("bar-chart")))),
                    dashboardBody(tabItems(
                      tabItem(tabName = "tab_01",
                              fluidRow(column(2, selectInput("gear_id",
                                                             "Gear:",
                                                             c("Gear_All", unique((mtcars$gear))))),
                                       column(2, selectInput("cyl_id",
                                                             "Cylinder:",
                                                             c("Cyl_all", unique(mtcars$cyl)))),
                                       column(2, selectInput("carb_id",
                                                             "Carburetor:",
                                                             c("carb_all", unique(mtcars$carb))))),
                                     fluidRow(box(dataTableOutput("table_01")))
                      ))))

server <- function(input, output, session){
  output$table_01 <- renderDataTable({
    datatable(mtcars %>% filter(gear %in% input$gear_id & cyl %in% input$cyl_id & carb %in% 
                                  input$carb_id) %>% select(gear, cyl, carb, vs))
  })
}

shinyApp(ui,server)
...