R 基于其他下拉选择动态设置下拉选项

R 基于其他下拉选择动态设置下拉选项,r,shiny,R,Shiny,下面的代码允许用户在下拉列表中选择两个数据集,并显示所选数据集的所有列。我想添加第二个下拉列表,该下拉列表动态转换为所选第一个下拉列表中的列名称,以便用户可以选择仅显示单个列。目标是能够将任何数据集添加到第一个下拉列表中,并在第二个下拉列表中列出其列 library(shiny) ui <- shinyUI( fluidPage( selectInput("dataset", label = NULL, choices = c("mtcars&

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


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)



图书馆(闪亮)

ui也许你在找这个

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)
库(闪亮)

ui优胜者鸡肉晚餐。谢谢你不用DT就能解决这个问题吗?我真正想做的是将2个用户选择的列显示在服务器的ggplot输出中。请查看更新的代码。再次感谢。我正在寻找第二个下拉列表,但这将起作用