إنشاء القائمة المنسدلة في لامعة ص باستخدام العلامات

StackOverflow https://stackoverflow.com//questions/24054726

  •  22-12-2019
  •  | 
  •  

سؤال

وأنا أعلم باستخدام التعليمات البرمجية التالية يمكنني إنشاء القائمة المنسدلة العادية في لامعة,

selectInput("Input1", "Choose you Input:", choices = c('a1'='1','b2'='2'))

مما سيؤدي إلى إنشاء القائمة المنسدلة التالية

enter image description here

ولكن أنا باستخدام لوحة مشروطة والتي أنا ملء نوع من إسقاط مضمنالقائمةشيء من هذا القبيل

enter image description here

أنا باستخدام التعليمات البرمجية التالية لتوليد هذه القوائم.

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")))

مشكلتي هي لا يمكنني إضافة عناصر إلى هذه القائمة المنسدلة.حاولت القيم أو الخيارات ، ولكن هذا لم يغير شيئا.

آمل أن أكون قد قدمت معلومات كافية ، واسمحوا لي أن أعرف إذا كان هناك حاجة إلى مزيد من المعلومات.

هل كانت مفيدة؟

المحلول

يمكنك توفير قائمة من العلامات ل 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)
      }
    })
  }
))

بالطبع يمكنك فقط استخدام 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)
      }
    })
  }
))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top