2016-10-02 5 views
0

В приложении Shiny я динамически создаю radioButtons на сервере и использую renderUI для передачи этого клиенту. Теперь у меня возникла проблема получения ответа radioButtons (выбранного элемента) для дальнейшей обработки. Ниже урезанная версия моей проблемы.Использование динамических кнопок radioButtons в Shiny

library(shiny) 

ui <- shinyUI(pageWithSidebar( 
    headerPanel("test dynamic radio buttons"), 
    sidebarPanel( 
    ), 
    mainPanel( 
     x <- uiOutput('radioTest'), 
     actionButton('submit', label = "Submit"), 
     br(), 
     print(paste("Radiobutton response is:", "reply()")), 
     textOutput('text') 
    ) 
)) 

server <- shinyServer( 
    function(input, output) { 
     output$radioTest <- renderUI({ 
      options <- c("item 1", "item 2", "item 3") 
      # The options are dynamically generated on the server 
      radioButtons('reply', 'What item do you select ?', options, selected = character(0)) 
     }) 
     observe({ 
      input$submit 
      isolate(
       output$text <- renderText({ 
        paste("Radiobutton response is:", "reply()") 
       }) 
      ) 
     }) 
    } 
) 

# Run the application 
shinyApp(ui = ui, server = server) 

ответ

1

Вы хотите что-то вроде следующего?

library(shiny) 

ui <- shinyUI(pageWithSidebar( 
    headerPanel("test dynamic radio buttons"), 
    sidebarPanel( 
), 
    mainPanel( 
    x <- uiOutput('radioTest'), 
    actionButton('submit', label = "Submit"), 
    br(), 
    #print(paste("Radiobutton response is:", "reply")), 
    textOutput('text') 
) 
)) 

server <- shinyServer( 
    function(input, output) { 
    output$radioTest <- renderUI({ 
     options <- c("item 1", "item 2", "item 3") 
     # The options are dynamically generated on the server 
     radioButtons('reply', 'What item do you select ?', options, selected = character(0)) 
    }) 
    observe({ 
     input$submit 

     isolate(
     output$text <- renderText({ 
      paste("Radiobutton response is:", input$reply) 
     }) 
    ) 
    }) 
    } 
) 

# Run the application 
shinyApp(ui = ui, server = server) 

enter image description here

+0

Благодаря Sandipan. На самом деле это интенция. Оставшаяся проблема заключается в том, что код наблюдает за ответом кнопки Submit, но изолированное значение ввода $ reply все равно изменяется сразу же после активации другой опции. Как я могу отложить реакцию Radiobutton до тех пор, пока кнопка Submit не будет активирована? Из отладки я вижу, что вывод $ text рендеринга запускается сразу после запуска приложения (он не ждет) – Paul

+0

У меня возникла проблема с ответом. См. Код ниже. Еще раз спасибо за то, что указал мне в правильном направлении. наблюдения ({ входа $ представить изолят (текст <- паста ("RadioButton ответ:", вход $ ответа)) выхода $ текст <- renderText ({текст}) }) – Paul

+0

большого, спасибо за обновленный код –

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