Отображение сводной статистики в информационных блоках - PullRequest
1 голос
/ 07 июля 2019

Мне бы хотелось, чтобы в моем блестящем приложении была возможность отображать сводную статистику по каждому столбцу набора данных в информационных блоках. Мое приложение позволяет пользователям загружать свои собственные наборы данных с разными заголовками для каждого столбца, поэтому я не могу вручную создавать инфобоксы - они должны создаваться из любого загруженного набора данных. Пока у меня есть код ниже:

library(shiny)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title = "Dynamic boxes"),
  dashboardSidebar(),
  dashboardBody(
    fluidRow(
      verbatimTextOutput("summaryBasicStats"),
      uiOutput("ibox")
    )))
server <- function(input, output) {


  ############ Basic Stats Events ############


  # Return the requested dataset ----
  datasetInputBasicStats <- reactive({
    mtcars
  })

  # Generate a summary of the dataset ----
  output$summaryBasicStats <- renderPrint({
    dataset <- datasetInputBasicStats()
    summary(dataset)
  })


  output$ibox <- renderUI({
    list(
      infoBox(
        "Title",
        5,
        icon = icon("credit-card")
      ),
      infoBox(
        "Title",
        5,
        icon = icon("credit-card")
      ),
      infoBox(
        "Title",
        4,
        icon = icon("credit-card")
      )
    )
  })}
shinyApp(ui, server)

1 Ответ

2 голосов
/ 07 июля 2019

Как правило, вам нужно создать список информационных ящиков с lapply в сводной таблице.Вот способ:

library(shiny)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title = "Dynamic boxes"),
  dashboardSidebar(),
  dashboardBody(
    fluidRow(
      uiOutput("ibox")
    )))
server <- function(input, output) {


  ############ Basic Stats Events ############


  # Return the requested dataset ----
  datasetInputBasicStats <- reactive({
    mtcars
  })

  sumdiplay = reactive({
  plouf <- summary(datasetInputBasicStats())
  info <- lapply(colnames(plouf),function(coln){
    infoBox(
      coln,
      paste0(plouf[,coln],collapse = "\n"),
      icon = icon("credit-card"),
      width = 6
    )
  })
  return(info)
  })
  output$ibox <- renderUI({
    sumdiplay()
  })}
shinyApp(ui, server)

Я использую список имен столбцов в lapply, чтобы получить имя столбца в информационном ящике:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...