使用标签在Shiny-R中创建下拉菜单

vra*_*js5 8 html r drop-down-menu shiny

我知道使用以下代码我可以创建闪亮的普通下拉菜单,

selectInput("Input1", "Choose you Input:", choices = c('a1'='1','b2'='2'))
Run Code Online (Sandbox Code Playgroud)

这将创建以下下拉列表

在此输入图像描述

但是我正在使用conditionalPanel,并且我正在填充类似于内联的dropdown菜单

在此输入图像描述

我正在使用以下代码生成这些菜单.

conditionalPanel(condition="input.conditionedPanels==3",
                     div(style="display:inline-block",
                         tags$label('Menu1', `for` = 'Sample'), 
                         tags$select(id = 'Sample', class="input-small")),
                     div(style="display:inline-block",
                         tags$label('Menu2', `for` = 'Sample1'), 
                         tags$select(id = 'Sample1', class="input-small")))
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法在这些下拉菜单中添加项目.我尝试过值或选项,但这并没有改变任何东西.

我希望我提供了足够的信息,如果需要更多信息,请告诉我.

jdh*_*son 6

您可以提供标签列表tagList.您需要的option标签是带有value属性的标签您可以使用它们构建这些标签mapply

library(shiny)

runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Enter 3 for condition', 3, 0, 10),
    conditionalPanel(condition="input.n==3",
                     div(style="display:inline-block",
                         tags$label('Menu1', `for` = 'Sample'), 
                         tags$select(id = 'Sample', class="input-small",
                                     tagList(mapply(tags$option, value = 1:10, 
                                                    paste0(letters[1:10], 1:10), 
                                                    SIMPLIFY=FALSE)))
                     ),
                     div(style="display:inline-block",
                         tags$label('Menu2', `for` = 'Sample1'), 
                         tags$select(id = 'Sample1', class="input-small",
                                     tagList(mapply(tags$option, value = 1:2, 
                                                    paste0(letters[1:2], 1:2), 
                                                    SIMPLIFY=FALSE)))
                     )
    )
    , textOutput("cond")
  ),
  server = function(input, output) {
    output$cond <- renderText({
      if(input$n == 3){
        paste0("Sample value selected =", input$Sample, " Sample1 value selected =",input$Sample1)
      }
    })
  }
))
Run Code Online (Sandbox Code Playgroud)

当然你可以在selectInput里面使用div例如:

library(shiny)

runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Enter 3 for condition', 3, 0, 10),
    conditionalPanel(condition="input.n==3",
                     div(style="display:inline-block",
                         selectInput("Sample", "Choose you Input:", choices = c('a1'='1','b2'='2'))
                     ),
                     div(style="display:inline-block",
                         tags$label('Menu2', `for` = 'Sample1'), 
                         tags$select(id = 'Sample1', class="input-small",
                                     tagList(mapply(tags$option, value = 1:2, 
                                                    paste0(letters[1:2], 1:2), 
                                                    SIMPLIFY=FALSE)))
                     )
    )
    , textOutput("cond")
  ),
  server = function(input, output) {
    output$cond <- renderText({
      if(input$n == 3){
        paste0("Sample value selected =", input$Sample, " Sample1 value selected =",input$Sample1)
      }
    })
  }
))
Run Code Online (Sandbox Code Playgroud)