2017-08-12 62 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)) 

這不應該只是打印出來,但它應該是提供給我以後。 我的計劃是,人們評價我的情節,然後我看到每一個用戶他點擊每個情節的按鈕。