我很聪明,并且在创建一个简单的应用程序时遇到了一些麻烦。我正在尝试使用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)
)
)
)
)
答案 0 :(得分:0)
通常不鼓励submitButton
使用更通用的actionButton
(每次按下时增加1)。
在您的server.R
代码中,您可以创建一个响应式calc_score
),它依赖于input$submit
(即actionButton
),然后计算得分(此处)使用复选框,因为TRUE和FALSE分别等于1和0,因此复选框值的总和给出了分数。使用隔离避免了对input$var1
和input$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)