2017-08-12 59 views
1

我有以下应用: 如果你点击下一步,你会看到一个情节 - 在琐碎信息的时刻 - 和有选择二单选按钮选项:yes或no。然后你可以点击下一个按钮并评估下一个图。问题是,你必须先点击按钮才能显示第一个图。你也可以在打印声明中看到一个错误。第一个单选按钮选项打印在第一个打印语句的第二行。按钮闪亮点击显示新的情节

你能帮我展示一个初始的情节?

ui <- fluidPage(

    actionButton("buttonNext", "Next"), 

    radioButtons("radio", "Your Decision:", 
       choices = c("No Decision" = 'NoDec', "Yes" = 'yes', "No" = 'no'), 
       selected = 'NoDec'), 

    plotOutput("TimeSeriesPlot") 
) 


server <- function(input,output,session) { 

    observeEvent(input$buttonNext, { 
    }) 

    clickNext <- eventReactive(input$buttonNext, { 
    updateRadioButtons(session,'radio',selected = -1) 
    randomNumber <- input$buttonNext 
    print(c(input$buttonNext,randomNumber,input$radio)) 
    return(randomNumber) 
    }) 

    output$TimeSeriesPlot <- renderPlot({ 

    i <- clickNext() 
    plot(i) 

    }) 

} 
shinyApp(server = server, ui = ui) 

回答

1

您可以使用简单的被动语句,并隔离您调用单选按钮值的语句。这样,被动方将不会依赖单选按钮。此外,它被认为是不好的做法,使用反应它的副作用,更好地从一个独立的观察者更新单选按钮:

ui <- fluidPage(

    actionButton("buttonNext", "Next"), 

    radioButtons("radio", "Your Decision:", 
       choices = c("No Decision" = 'NoDec', "Yes" = 'yes', "No" = 'no'), 
       selected = 'NoDec'), 

    plotOutput("TimeSeriesPlot") 
) 


server <- function(input,output,session) { 

    clickNext <- reactive({ 
    isolate(input_radio <- input$radio) 
    randomNumber <- input$buttonNext 
    print(c(input$buttonNext,randomNumber,input_radio)) 
    return(randomNumber) 
    }) 

    observeEvent(input$buttonNext, 
       { 
       updateRadioButtons(session,'radio',selected = -1) 
       }) 

    output$TimeSeriesPlot <- renderPlot({ 
    i <- clickNext() 
    plot(i) 
    }) 

} 
shinyApp(server = server, ui = ui) 

希望这有助于。

0

谢谢你很多!

怎么可能保存用户插入数据:

print(c(input$buttonNext,randomNumber,input_radio)) 

这不应该只是打印出来,但它应该是提供给我以后。 我的计划是,人们评价我的情节,然后我看到每一个用户他点击每个情节的按钮。