Shiny的新手似乎无法找到这个信息:我正在制作一个带有两个selectInput
下拉列表的应用,以便第二个(以黄色突出显示)取决于第一个。
这是用于数据探索,基本上是通过不同的文件夹内容。这就是我想要的:
ui <- fluidPage(
selectInput(inputId = "site", label = "Select Site", choices = dir(basepath)),
selectInput(inputId = "duct", label = "Select Duct",
choices = dir(grep(input$site, dir(basepath, full.names = T), val = T)))
)
上面的代码显然不起作用。我不知道如何在另一个输入函数中使用input$site
。
我找到了一些答案:Displaying multiple inputbox on selecting multiple variables using selectinput function in R Shiny和using conditionalPanel in Shiny ui.R and server.R: different selectInput based on a condition,但它们不能直接应用,因为我没有详尽列出第一个输入的可能选项(inputId = "site"
)
答案 0 :(得分:4)
我基于mtcars
数据集创建了一个小例子。在这里,您会发现selectInput
site
中的齿轮将对数据进行分组,并将返回名为selectInput
的第二个duct
,其仅显示第一个中的选定值:
library(shiny)
ui <- basicPage(
headerPanel("Test Shiny App"),
sidebarPanel(
selectInput(inputId = "site", label = "Select Site", choices = unique(mtcars$gear)),
uiOutput("dynamicui")),
mainPanel()
)
server <- function(input, output, session){
output$dynamicui <- renderUI({
selectInput(inputId = "duct", label = "Select Duct", choices = rownames(mtcars)[mtcars$gear %in% input$site])
})
}
runApp(list(ui = ui, server = server))