2017-04-16 68 views
0

我很新,很有創意,創建一個簡單的應用程序時遇到了一些麻煩。我正在嘗試使用selectInputs來創建分數。例如:如果問題1 =真,問題2 =真,那麼輸出值= 2;如果問題1 =假,問題2 =真,那麼輸出值= 1;等等。我認爲這個問題可能是因爲我沒有理解反應性如何工作,儘管幾次閱讀文檔(很多)。我也嘗試過用單選按鈕和動作按鈕,但沒有運氣。閃亮,從selectInputs創建分數

這裏就是我有在UI端:

ui.R 
shinyUI(fluidPage(
    titlePanel("title"), 
    sidebarLayout(
    sidebarPanel(

     selectInput("var1", 
       label = "Some question 1", 
       choices = c("True", "False"), 
       selected = "True"), 
     selectInput("var2", 
       label = "Some question 2", 
       choices = c("True", "False"), 
       selected = "True"),  
     submitButton(text = "Submit", icon = NULL, width = NULL) 
    ) 
    ) 
    ) 
) 

回答

0

採用submitButton普遍贊成更靈活actionButton(其中各按一次增加1)氣餒。

在你server.R代碼,你可以創建一個反應(calc_score)這需要在input$submit(即actionButton),然後計算分數的依賴關係(在這裏,因爲TRUE複選框的使用和FALSE分別等於1和0,所以您的複選框值的總和給出分數)。使用隔離區可以避免依賴於input$var1input$var2,因此calc_score確實會觸發而不會觸發(僅當input$submit發生更改時,即按下actionButton時)。

最後,如果它是由一個輸出端(在output$score功能這使得文本然後經由verbatimTextOutput("score")包括在UI在這種情況下)

library(shiny) 
ui <- shinyUI(fluidPage(
    titlePanel("title"), 
    sidebarLayout(
    sidebarPanel(
     checkboxInput("var1", label = "Some question 1", value = TRUE), 
     checkboxInput("var2", label = "Some question 2", value = TRUE),  
     actionButton(inputId = "submit", label = "Submit", icon = NULL, width = NULL) 
    ), 
    mainPanel(
     verbatimTextOutput("score") 
    )))) 
server <- function(input, output) { 

    calc_score <- reactive({ 
    input$submit 
    isolate(sum(c(input$var1, input$var2))) 
    }) 

    output$score <- renderText({ 
    calc_score() 
    }) 
} 
shinyApp(ui = ui, server = server) 
實際消耗 calc_score僅觸發