R Shiny 中的多输入选择
Multiple Input selection in Rshiny
我正在尝试为我的项目构建一个 Rshiny。我试图包括 2 个输入,
First Input 是一个下拉列表,其中包含从 1 月到 12 月的月份。
第二个输入可以是下拉列表或任何允许我 select 多个项目的内容。第二个输入项类似于 -"Assault"、"Theft"、"Burglary" 等。
用户只能从第一个输入中选择一个项目,从第二个输入中选择多个项目。
所以基本上,如果我从第一个输入中选择 Jan,从第二个输入中选择 "Assault","Theft",则应该显示一个条形图,描述 1 月的攻击和盗窃次数。
输入数据框如下所示
PrimaryType Month count
Assault Jan 25
Burglary Jan 30
Tresspass Feb 23
Assault Feb 12
Burglary Feb 34
ui <- fluidPage(
titlePanel(div(HTML("<em> Crime Rate in Chichago </em>"))),
tabsetPanel(
tabPanel(" Frequency of Crime ",
sidebarLayout(
sidebarPanel(
#First Input#
selectInput(inputId = "Month",
label = " Choose a Month",
choices = unique(crime$Month))),
#Second input#
selectInput(inputId = "Crime",
label = " Choose among Crime",
choices = unique(crime$`Primary Type`),multiple =
TRUE)),
#Output#
mainPanel = (plotOutput("view")
)
)
)
)
#Shiny app -Server#
server <- function(input, output) {
output$view <- renderPlot({
Monthfilter <- a[a$Month==input$Month,]
crimefilter <- Monthfilter[Monthfilter$`Primary Type` %in% input$Crime,]
ggplot(crimefilter, aes(`Primary Type`,c))+geom_bar(stat="identity")
})
}
#Shinyapp#
shinyApp(ui = ui, server = server)
我想要一个包含多种主要犯罪类型的特定月份的条形图
以后,尝试在您的代码中提供一些示例数据,这样就不必重现了。
您的代码中存在一些错误:
- mainPanel 应位于 sidebarLayout
内
- 您的数据集是 'crime' 而不是 'a',因为您在绘图输出 (a[a$Month==input$Month,])
- 您可能在数据集中将列 header 设置为 'PrimaryType',但您在代码中将其引用为 'Primary Type'(带有 space)
crime = data.table('Primary Type' = c('Assault','Burglary', 'Tresspass', 'Assault','Burglary'),
Month = c('Jan', 'Jan', 'Feb','Feb','Feb'),
Count = c(12,13,43,54,11))
ui <- fluidPage(
titlePanel(div(HTML("<em> Crime Rate in Chichago </em>"))),
tabsetPanel(
tabPanel(" Frequency of Crime ",
sidebarLayout(
sidebarPanel(
#First Input#
selectInput(inputId = "Month",
label = " Choose a Month",
choices = unique(crime$Month)),
#Second input#
selectInput(inputId = "Crime",
label = " Choose among Crime",
choices = unique(crime$`Primary Type`),
multiple = TRUE)
),
#Output#
mainPanel(
plotOutput("bar_plot")
)
)
)
)
)
#Shiny app -Server#
server <- function(input, output) {
output$bar_plot <- renderPlot({
Monthfilter <- crime[crime$Month == input$Month,]
print('hello')
crimefilter <- Monthfilter[Monthfilter$`Primary Type` %in% input$Crime,]
ggplot(data = crimefilter, aes(x = `Primary Type`, y = Count)) + geom_bar(stat="identity")
})
}
#Shinyapp#
shinyApp(ui = ui, server = server)r)
我正在尝试为我的项目构建一个 Rshiny。我试图包括 2 个输入, First Input 是一个下拉列表,其中包含从 1 月到 12 月的月份。 第二个输入可以是下拉列表或任何允许我 select 多个项目的内容。第二个输入项类似于 -"Assault"、"Theft"、"Burglary" 等。 用户只能从第一个输入中选择一个项目,从第二个输入中选择多个项目。 所以基本上,如果我从第一个输入中选择 Jan,从第二个输入中选择 "Assault","Theft",则应该显示一个条形图,描述 1 月的攻击和盗窃次数。
输入数据框如下所示
PrimaryType Month count
Assault Jan 25
Burglary Jan 30
Tresspass Feb 23
Assault Feb 12
Burglary Feb 34
ui <- fluidPage(
titlePanel(div(HTML("<em> Crime Rate in Chichago </em>"))),
tabsetPanel(
tabPanel(" Frequency of Crime ",
sidebarLayout(
sidebarPanel(
#First Input#
selectInput(inputId = "Month",
label = " Choose a Month",
choices = unique(crime$Month))),
#Second input#
selectInput(inputId = "Crime",
label = " Choose among Crime",
choices = unique(crime$`Primary Type`),multiple =
TRUE)),
#Output#
mainPanel = (plotOutput("view")
)
)
)
)
#Shiny app -Server#
server <- function(input, output) {
output$view <- renderPlot({
Monthfilter <- a[a$Month==input$Month,]
crimefilter <- Monthfilter[Monthfilter$`Primary Type` %in% input$Crime,]
ggplot(crimefilter, aes(`Primary Type`,c))+geom_bar(stat="identity")
})
}
#Shinyapp#
shinyApp(ui = ui, server = server)
我想要一个包含多种主要犯罪类型的特定月份的条形图
以后,尝试在您的代码中提供一些示例数据,这样就不必重现了。
您的代码中存在一些错误:
- mainPanel 应位于 sidebarLayout 内
- 您的数据集是 'crime' 而不是 'a',因为您在绘图输出 (a[a$Month==input$Month,])
- 您可能在数据集中将列 header 设置为 'PrimaryType',但您在代码中将其引用为 'Primary Type'(带有 space)
crime = data.table('Primary Type' = c('Assault','Burglary', 'Tresspass', 'Assault','Burglary'),
Month = c('Jan', 'Jan', 'Feb','Feb','Feb'),
Count = c(12,13,43,54,11))
ui <- fluidPage(
titlePanel(div(HTML("<em> Crime Rate in Chichago </em>"))),
tabsetPanel(
tabPanel(" Frequency of Crime ",
sidebarLayout(
sidebarPanel(
#First Input#
selectInput(inputId = "Month",
label = " Choose a Month",
choices = unique(crime$Month)),
#Second input#
selectInput(inputId = "Crime",
label = " Choose among Crime",
choices = unique(crime$`Primary Type`),
multiple = TRUE)
),
#Output#
mainPanel(
plotOutput("bar_plot")
)
)
)
)
)
#Shiny app -Server#
server <- function(input, output) {
output$bar_plot <- renderPlot({
Monthfilter <- crime[crime$Month == input$Month,]
print('hello')
crimefilter <- Monthfilter[Monthfilter$`Primary Type` %in% input$Crime,]
ggplot(data = crimefilter, aes(x = `Primary Type`, y = Count)) + geom_bar(stat="identity")
})
}
#Shinyapp#
shinyApp(ui = ui, server = server)r)