我有一个简单的Shiny应用程序,可在主面板中显示问题。问题仅仅是10、20或30。
R控制台中显示“正确”或“错误”的结果。
然后可以单击操作按钮“下一步”转到下一个问题,该问题应显示在mainPanel中。当前,该问题未显示,但索引正在工作。
我不清楚如何显示第二个问题。我相信我需要使“ questions”或“ question_index”成为反应变量?不确定。
此外,我正在对question_index使用全局变量,我认为这是错误的形式。同样,不确定替代方法是什么。
js <- '
$(document).on("keyup", function(e) {
if(e.keyCode == 13){
Shiny.onInputChange("keyPressed", Math.random());
}
});
'
shinyApp(
ui = fluidPage(
tags$script(js),
sidebarLayout(
sidebarPanel(
textInput("answer",
width = "50px",
label = "Answer"),
actionButton(
inputId = "next_question",
label = "Next"
)
),
mainPanel(
textOutput("equation")
)
)
),
server = function(input, output, session){
questions <- c("10", "20", "30")
question_index <<- 1
Answer <- reactiveVal()
observeEvent(input$keyPressed, {
Answer(input$answer)
if (input$answer == questions[question_index]) {
print("Right")
} else {
print("Wrong")
}
})
output$equation <- renderText({
# Answer()
questions[question_index]
})
observeEvent(input$next_question, {
question_index <<- question_index + 1
print(question_index)
})
}
)
答案 0 :(得分:1)
一种方法确实是使问题索引具有这种反应性
SkeletonHelper
然后将其命名为
values <- reactiveValues(question_index=1)