R блестящая информационная панель приборной панели с входом набора данных - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок в и блестящий и подозреваю, что застрял с простой проблемой.

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

Я много чего перепробовал, но ничего не принесло мне успеха.

## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(

    uiOutput("info_box1"),
    uiOutput("info_box2"),
    uiOutput("rawdata")
  )
)

set.seed(24)
mydf <- data.frame(Type = sample(LETTERS[1:5], 30, replace = TRUE),
                   Amount = sample(10:200, 30, replace = TRUE), 
                   stringsAsFactors= FALSE, check.names = FALSE)


server <- function(input, output) {

  output$info_box1 <- renderUI({
    infoBox("Amount in Total here", input$ "???")
  })

  output$info_box2 <- renderUI({
    infoBox("Class with the hightest amount and amount in total of that class", "input$ function needed?")
  })

  output$rawdata = renderTable({
    mydf
  })


}

# Run the application 
shinyApp(ui = ui, server = server)

Может кто-нибудь подскажет, пожалуйста, как сделать это?

Большое спасибо. Ценю вашу помощь.

1 Ответ

1 голос
/ 05 апреля 2020

Вы должны использовать соответствующие функции, см. Здесь: https://rstudio.github.io/shinydashboard/structure.html

app.R

library(shiny)
library(shinydashboard)
library(dplyr)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(

    infoBoxOutput("info_box1"),
    infoBoxOutput("info_box2"),
    tableOutput("rawdata")
  )
)

set.seed(24)
mydf <- data.frame(Type = sample(LETTERS[1:5], 30, replace = TRUE),
                   Amount = sample(10:200, 30, replace = TRUE), 
                   stringsAsFactors= FALSE, check.names = FALSE)


server <- function(input, output) {

  output$info_box1 <- renderInfoBox({
    infoBox("Amount in Total here", sum(mydf$Amount))
  })

  output$info_box2 <- renderInfoBox({
df_output <- mydf %>% group_by(Type) %>% tally()
    infoBox("Class with the hightest amount and amount in total of that class", paste(df_output$Type[df_output$n == max(df_output$n)],max(df_output$n))  )
  })

  output$rawdata = renderTable({
    mydf
  })


}

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