【问题标题】:Dynamically set dropdown options based on other dropdown selection根据其他下拉选择动态设置下拉选项
【发布时间】:2021-03-11 20:36:15
【问题描述】:

以下代码允许用户在下拉列表中选择 2 个数据集,并显示所选数据集的所有列。我想添加第二个下拉列表,该下拉列表使用所选第一个下拉列表中的列名称动态转换,以便用户可以选择仅显示单个列。目标是能够将任何数据集添加到第一个下拉列表中,并将其列列在第二个下拉列表中。


library(shiny)

ui <- shinyUI(
  fluidPage(
    selectInput("dataset", label = NULL, choices = c("mtcars", "rock")),
    tableOutput("contents")
  )
)

server <- function(input, output, session) {
  
  myData <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "mtcars" = mtcars)
  })
  
  output$contents <- renderTable({
    myData()
  })
  
  observe({
    updateSelectInput(session, "myNames",
                      label = "myNames",
                      choices = myData()$names,
                      selected = myData()$names[1])
  })
  
}

shinyApp(ui, server)


【问题讨论】:

    标签: r shiny


    【解决方案1】:

    也许你正在寻找这个

    library(shiny)
    
    ui <- shinyUI(
      fluidPage(
        selectInput("dataset", label = NULL, choices = c("mtcars", "rock")),
        uiOutput("selectvar"),
        plotOutput("contents")
      )
    )
    
    server <- function(input, output, session) {
      
      myData <- reactive({get(input$dataset)})
      
      output$selectvar <- renderUI({
        selectInput("varsel", label=NULL, choices=names(myData()), multiple=T)
      })
      
      output$contents <- renderPlot({
        req(input$varsel[1],input$varsel[2])
        ggplot(myData(), aes(x=.data[[input$varsel[1]]], y=.data[[input$varsel[2]]] )) + geom_point()
      })
      
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 赢家鸡肉晚餐。谢谢
    • 不使用DT能解决这个问题吗?我真正想做的是获取 2 个用户选择的列并将它们显示在服务器的 ggplot 输出中
    • 再次感谢您。我一直在寻找第二个下拉菜单,但这会起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2013-07-09
    相关资源
    最近更新 更多