[英]group_by dplyr function in shiny
使用Shiny時,我無法在dplyr工作中使用group_by。 似乎dplyr無法將Shiny的input $ var識別為表中的有效字段。
在此示例中,我希望ui.R中的“級別”輸入指示要進行分組的內容。
在ui.RI中有:
library(shiny)
shinyUI(fluidPage(
titlePanel("Orders"),
sidebarLayout(
sidebarPanel(
selectInput("Region_Input", label = h5("Choose a Region"),
choices = list("A", "B")),
radioButtons("level", "What level do you want to see:",
list("item", "category"))
),
mainPanel(
verbatimTextOutput("Level_Select"),
tableOutput(outputId="table")
))))
在server.RI中有:
library(shiny)
library(dplyr)
OrderItems <- data.frame(Region = c('A','A','A','A','A','A','B','B','B','B','B','B','B'),
item = c('Item A','Item B','Item C','Item D','Item E',
'Item A','Item B','Item C','Item D','Item E',
'Item A','Item B','Item C'),
category = c('Cat 1','Cat 1','Cat 1','Cat 2','Cat 2',
'Cat 1','Cat 1','Cat 1','Cat 2','Cat 2',
'Cat 1','Cat 1','Cat 1'))
shinyServer(
function(input, output) {
output$table <- renderTable({
OrderItems %>%
group_by(input$level) %>%
summarize(count = n()) %>%
arrange(desc(count))
})
})
當“級別”輸入為“類別”時,我期望的輸出為:
category count
1 Cat 1 9
2 Cat 2 4
但是,我最終得到的是:
input$level count
1 category 13
任何有關如何解決此問題的想法將不勝感激!
每@ joran的評論,這應該是在更換簡單group_by(input$level)
與group_by_(input$level)
,但它很難不重復的例子說。 如果進行一些更改並利用mtcars
數據,則可以重現以下內容以查看其工作原理:
library(shiny)
library(dplyr)
shinyServer(
function(input, output) {
output$table <- renderTable({
mtcars %>%
group_by_(input$level) %>%
summarize(count = n()) %>%
arrange(desc(count))
})
})
library(shiny)
shinyUI(fluidPage(
titlePanel("Orders"),
sidebarLayout(
sidebarPanel(
selectInput("Region_Input", label = h5("Choose a Region"),
choices = list("A", "B")),
radioButtons("level", "What level do you want to see:",
list("cyl", "am"))
),
mainPanel(
verbatimTextOutput("Level_Select"),
tableOutput(outputId="table")
))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.