有光泽,从selectInputs创建得分

时间:2017-04-16 18:57:41

标签: shiny

我很聪明,并且在创建一个简单的应用程序时遇到了一些麻烦。我正在尝试使用selectInputs来创建分数。例如:如果问题1 =真,问题2 =真,那么输出值= 2;如果问题1 =假,问题2 =真,那么输出值= 1;等等。我认为问题可能是我没有掌握反应如何工作,尽管有几个人阅读文档(很多)。我也用单选按钮和动作按钮尝试了它没有运气。

这是我在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)
    )
    )
   )
  )

1 个答案:

答案 0 :(得分:0)

通常不鼓励submitButton使用更通用的actionButton(每次按下时增加1)。

在您的server.R代码中,您可以创建一个响应式calc_score),它依赖于input$submit(即actionButton),然后计算得分(此处)使用复选框,因为TRUE和FALSE分别等于1和0,因此复选框值的总和给出了分数。使用隔离避免了对input$var1input$var2的依赖,因此当复选框发生更改时calc_score触发(仅当input$submit更改时,即actionButton被按下了。)

最后,calc_score仅在输出实际消耗时触发(在这种情况下在output$score函数中,该函数呈现随后通过verbatimTextOutput("score")包含在UI中的文本)< / p>

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)