2015-08-19 2 views
0

я `м пытается построить приложение, как это: -блестящей приложение для взятия ввода нескольких полей

Выбрать: # это selectInput (Таким образом, только один может быть выбран в то время) выбор 1 выбор 2 выбор 3 когда выбор сделан, то говорят, выбор 1, то осыпь должен показывать далее подразделены опцию, что, как, В выборе 1 выберите: op1 op2 Op3 OP4

и они кратны флажок это пользователь может отметить отметку количество флажков. После этого должен быть отображен соответствующий вывод. , а также я хочу, чтобы приложение отражало изменения при изменении входов.

Я понятия не имею, чтобы сделать это, I`m пытается это от нескольких дней, но только удалось получить пользовательский интерфейс часть сделали, но ничего особенного на server.R код

ответ

1

надеюсь, что это поможет.

файл UI.R

library(shinyBS) 
library(shiny) 

shinyUI(fluidPage(

# input control for first choice 

selectInput("first_choice", 
       label = h1("First Answer a General Question"), 
       choices = list("select","A","B","C"), 
      selected = "select" 
      ), 

#collapsable panel for second choice 

h1("then get into details"), 

bsCollapse(
bsCollapsePanel(title = "details", 
       uiOutput("second_choice") 
       ), 
id = "collapser", multiple = FALSE, open = NULL 
), 
h2("first answer"), 
h3(textOutput("first_answer")), 
h2("second answer"), 
h3(textOutput("second_answer")) 

)) 

файл server.R

library(shiny) 

shinyServer(function(input, output,session) { 

    #retrieve selected values and render text from selection 

    output$first_answer <- renderText({input$first_choice}) 
    output$second_answer <- renderText({input$dynamic}) 
    output$second_choice <- renderUI({ 

    switch(input$first_choice, 
      "A" = checkboxGroupInput("dynamic", "Dynamic", 
            choices = c("Aragon","Frodo"), 
            selected = "option2"), 
      "B" = checkboxGroupInput("dynamic", "Dynamic", 
            choices = c("Bilbo","Gandalf","Sauron"), 
            selected = "option2"), 
      "C" = checkboxGroupInput("dynamic", "Dynamic", 
            choices = c("Boromir","Legolas"), 
            selected = "option2") 

      ) 

    }) 

    #observe function in order to open the collapsable panel when the first answer is given 


    observe({ 
    if (input$first_choice != "select") { 
     updateCollapse(session,"collapser",open = c('details')) 

     } 
    }) 

}) 

этот результат в следующем блестящем приложении:

shiny app dynamic answer showhing and change

, где второе меню открывается только после того, как сначала получите ответ, а варианты второго вопроса - d ynamically изменилось на основе первого ответа. выбранных ответов присваивается first_answer и second_answer.

Обратите внимание на использование пакета shinyBS для складываемой панели.

Вы можете найти более динамические изменения пользовательского интерфейса в следующем Rstudio источников: http://shiny.rstudio.com/articles/dynamic-ui.html

http://shiny.rstudio.com/gallery/dynamic-ui.html

+0

спасибо, на самом деле вопрос с каждым первым выбором, количество второго выбора изменяется. Здесь вы назначили 3 варианта с каждым первым выбором, но мне захотелось 4 варианта с процентом белого, 2 варианта с процентом черного и так далее ..... Возможно ли это? !! –

+0

Это должно быть то, что вы искали. Обратите внимание, что динамическое изменение стало возможным благодаря функции renderUI() и функции switch(). Узнайте больше об этих функциях в цитированных источниках и документации R. –

Смежные вопросы