R 根据另一个selectInput的选择筛选一个selectInput?
我有两个R 根据另一个selectInput的选择筛选一个selectInput?,r,shiny,shinydashboard,R,Shiny,Shinydashboard,我有两个selectInputs,我希望第一个(品牌)中的选择更改第二个(糖果)中可能的选择。例如,如果有人在第一个输入框中选择了“雀巢”,那么第二个框中将只显示雀巢糖果条。我的数据表有一列表示品牌,一列表示糖果条类型 我有下面的代码开始,但这显示了所有的选择,不管选择 selectInput(inputId="brand", label="Brand:", choices=as.character
selectInput
s,我希望第一个(品牌)中的选择更改第二个(糖果)中可能的选择。例如,如果有人在第一个输入框中选择了“雀巢”,那么第二个框中将只显示雀巢糖果条。我的数据表有一列表示品牌,一列表示糖果条类型
我有下面的代码开始,但这显示了所有的选择,不管选择
selectInput(inputId="brand",
label="Brand:",
choices=as.character
(unique(candyData$Brand)),
selected = "Nestle"
),
selectInput(inputId="candy",
label="Candy:",
choices=as.character
(unique(candyData$Candy)),
selected = "100Grand"
数据集如下所示:
Brand Candy
Nestle 100Grand
Netle Butterfinger
Nestle Crunch
Hershey's KitKat
Hershey's Reeses
Hershey's Mounds
Mars Snickers
Mars Twix
Mars M&Ms
更新的问题
如何根据后续筛选更新仪表板中的ValueBox
output$count <- renderValueBox({
valueBox(
value = nrow(candyData),
subtitle = "Number of Candy Bars",
icon = icon("table")
)
})
output$count这里有一种方法:
library(shiny)
library(shinydashboard)
##
ui <- shinyUI({
sidebarPanel(
htmlOutput("brand_selector"),
htmlOutput("candy_selector"))
})
##
server <- shinyServer(function(input, output) {
candyData <- read.table(
text = "Brand Candy
Nestle 100Grand
Netle Butterfinger
Nestle Crunch
Hershey's KitKat
Hershey's Reeses
Hershey's Mounds
Mars Snickers
Mars Twix
Mars M&Ms",
header = TRUE,
stringsAsFactors = FALSE)
output$brand_selector <- renderUI({
selectInput(
inputId = "brand",
label = "Brand:",
choices = as.character(unique(candyData$Brand)),
selected = "Nestle")
})
output$candy_selector <- renderUI({
available <- candyData[candyData$Brand == input$brand, "Candy"]
selectInput(
inputId = "candy",
label = "Candy:",
choices = unique(available),
selected = unique(available)[1])
})
})
##
shinyApp(ui = ui, server = server)
并将以下内容添加到服务器
:
output$count <- renderValueBox({
available <- candyData[candyData$Brand == input$brand, ]
valueBox(
value = nrow(available),
subtitle = sprintf("Number of %s Candy Bars", input$brand),
icon = icon("table"))
})
output$count请包括您的数据集candyData
,以及应用程序的其余代码。nrussell,示例数据集已经显示。nrussell,实际上我还有一个问题。在我闪亮的应用程序顶部,我有一个计数器,显示数据集中糖果条的总数。如何根据后续筛选自动更新此计数器?我将我当前的代码放在修订版中。@Nick Updated-为了将来的参考,您应该问一个单独的问题,即使它与原始问题有关,这样该信息就更容易被本网站的其他用户搜索到。感谢您的反馈和更新。非常感谢你的帮助!如果我想添加第三级过滤,可用的是什么?正如我在第一篇评论中提到的,你需要问一个新问题,而不是在原来的问题上附加子问题。
output$count <- renderValueBox({
available <- candyData[candyData$Brand == input$brand, ]
valueBox(
value = nrow(available),
subtitle = sprintf("Number of %s Candy Bars", input$brand),
icon = icon("table"))
})