У меня есть простое приложение Shiny, которое отображает вопрос на главной панели. Вопросы просто 10, 20 или 30.
Результат «Правильно» или «Неверно» отображается в консоли R.
Затем вы можете нажать кнопку ActionButton «Далее», чтобы перейти к следующему вопросу, который должен отображаться в главной панели. В настоящее время вопрос не отображается, но индексация работает.
Мне неясно, как отобразить второй вопрос. Я считаю, что мне нужно сделать "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)
})
}
)