在Shiny中使用链接的selectInput函数

时间:2018-02-13 16:05:35

标签: r shiny

Shiny的新手似乎无法找到这个信息:我正在制作一个带有两个selectInput下拉列表的应用,以便第二个(以黄色突出显示)取决于第一个。

enter image description here

这是用于数据探索,基本上是通过不同的文件夹内容。这就是我想要的:

  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 Shinyusing conditionalPanel in Shiny ui.R and server.R: different selectInput based on a condition,但它们不能直接应用,因为我没有详尽列出第一个输入的可能选项(inputId = "site"

1 个答案:

答案 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))