Многочисленное блестящее приложение group_by, создающее сюжет - PullRequest
1 голос
/ 31 марта 2020

\

Я действительно новичок в R Shiny.

У меня та же проблема, что и по ссылке ниже. несколько group_by в блестящем приложении

Вместо создания таблицы, которая сработала / я справился, следуя инструкциям по ссылке выше.

Я хотел бы сделать сюжет, желательно с hchart. В котором я хотел бы переключить информацию из-за группы. Сложная часть / или вещь, которая не работает, это поместить group_by на ось X.


## hier de tabel versie
df2 <- readRDS("Data.rds")


library(shiny)
library(DT)
library(dplyr)

ui <- fluidPage(

  titlePanel("Dashboard"),

  sidebarLayout(
    sidebarPanel(

      uiOutput("groups")

    ),


    mainPanel(

      DT::dataTableOutput("summary")
    )
  )
)


server <- function(input, output) {
  mydata <- reactive({
    data <- df2 
    data
  })




  output$groups <- renderUI({
    df <- mydata()
    selectInput(inputId = "grouper", label = "Group variable", choices = c("L","Lt","Lp"), selected = "L")
  })




  summary_data <- reactive({
    req(input$grouper)
    mydata() %>%
      dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
      dplyr::summarise(aantal = n()) %>% 
      dplyr::arrange(desc(aantal)) 
  })

  output$summary <- DT::renderDataTable({
    DT::datatable(summary_data())
  })



}


shinyApp(ui, server)



Приведенный выше код работает, но я попытался построить сюжет примерно так:

df2 <- readRDS("Data.rds")


library(shiny)
library(highcharter) 
library(dplyr)

ui <- fluidPage(

  titlePanel("Dashboard"),

  sidebarLayout(
    sidebarPanel(

      uiOutput("groups")

    ),


    mainPanel(

      highchartOutput("plotje")
    )
  )
)


server <- function(input, output) {
  mydata <- reactive({
    data <- df2  
    data
  })




  output$groups <- renderUI({
    df <- mydata()
    selectInput(inputId = "grouper", label = "Group variable", choices = c("L","Lt","Lp"), selected = "L")
  })




  summary_data <- reactive({
    req(input$grouper)
    mydata() %>%
      dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
      dplyr::summarise(aantal = n()) %>% 
      dplyr::arrange(desc(aantal))
  })

  output$plotje <- renderHighchart({
    data <- summary_data()
    hchart(data, "column", hcaes(x = "grouper" , y = aantal)) # --> de plot zelf komt in het output deel van de UI
  })



}


shinyApp(ui, server)





Может ли кто-нибудь мне помочь?!

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

С уважением,

Steff ie

1 Ответ

1 голос
/ 31 марта 2020

У вас есть столбец группировщика в input$grouper var. Это просто вопрос кавычки.

Строка hchart(data, "column", hcaes(x = "grouper" , y = aantal)) должна быть: hchart(data, "column", hcaes(x = !!input$grouper , y = aantal))

Полный пример (с данными iris, поскольку вы не предоставили собственный пример) данные):

library(shiny)
library(DT)
library(highcharter)
library(dplyr)

ui <- fluidPage(titlePanel("Dashboard"),

                sidebarLayout(
                  sidebarPanel(uiOutput("groups")),

                  mainPanel(DT::dataTableOutput("summary"),
                            highchartOutput("plot"))
                ))


server <- function(input, output) {
  mydata <- reactive({
    iris
  })

  output$groups <- renderUI({
    df <- mydata()
    selectInput(
      inputId = "grouper",
      label = "Group variable",
      choices = c("Petal.Length", "Species"),
      selected = "Species"
    )
  })

  summary_data <- reactive({
    req(input$grouper)
    mydata() %>%
      dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
      dplyr::summarise(aantal = n()) %>%
      dplyr::arrange(desc(aantal))
  })

  output$summary <- DT::renderDataTable({
    DT::datatable(summary_data())
  })

  output$plot <- renderHighchart({
    req(input$grouper)
    data <- summary_data()
    hchart(data, "column", hcaes(x = !!input$grouper, y = aantal))
  })

}

shinyApp(ui, server)

screencapture of working shiny app

...