Как использовать group_by_ () с блестящими и обратными галочками> - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу, чтобы мой пример работал. Когда я не использую обратные галочки и, например, меняю Miles Per Gallon на MilesPerGallon, тогда он корректно группируется по столбцу. Тем не менее, как только я положу его обратно, он не будет работать.

library(shiny)
library(DT)
library(tidyverse)

ui <- fluidPage(

   titlePanel("Old Faithful Geyser Data"),

   sidebarLayout(
      sidebarPanel(

        selectInput("groups", "Choose Groupings", choices = "Miles Per Gallon", multiple = TRUE, selected = "")

      ),


      mainPanel(

        DT::dataTableOutput("data")

      )
   )
)


server <- function(input, output) {

  output$data <- DT::renderDataTable({

    mtcars %>%
      select(`MilesPerGallon` = mpg, cyl, wt) -> dat

    if(length(input$groups) == 0) {

     dat

    } else {

      dat %>%
        dplyr::group_by_(input$groups) %>%
        summarise(n = n())

    }


  })

}

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

1 Ответ

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

Используйте group_by_at, который принимает ввод строки.

library(shiny)
library(DT)
library(tidyverse)

ui <- fluidPage(

  titlePanel("Old Faithful Geyser Data"),
  sidebarLayout(
      sidebarPanel( 
      selectInput("groups", "Choose Groupings", choices = "Miles Per Gallon", 
                    multiple = TRUE, selected = "") 
),

mainPanel(  
  DT::dataTableOutput("data")
    )
  )
)

server <- function(input, output) {
    output$data <- DT::renderDataTable({
    mtcars %>%
      select(`Miles Per Gallon` = mpg, cyl, wt) -> dat

    if(length(input$groups) == 0) {
     dat
   } else {
      dat %>%
         dplyr::group_by_at(input$groups) %>%
         summarise(n = n())
     }
   })
}
# Run the application 
shinyApp(ui = ui, server = server)

enter image description here

...