【问题标题】:Accessing values inside eventReactive访问 eventReactive 中的值
【发布时间】:2020-03-02 19:40:43
【问题描述】:

我需要一个基本的 Shiny 问题的帮助。我的目标是制作一个简单的数学测验应用程序(什么是 4 x 4?)。我想用一个按钮创建值,选择一个数字答案,然后按另一个答案按钮。我的问题是我找不到访问存储在 eventReactive 中的值的方法。我在下面的代码中简化了问题。这个应用程序的目标是要求一个号码,然后提供它。提前谢谢!

# Goal: Fetch a number, then input that number, then receive paste("correct")/paste("incorrect)

ui <- fluidPage(
      textOutput(outputId = "out"),

      numericInput(inputId = "inn",
               label = "",
               value = 0),

  actionButton("answer", "Answer"),
  actionButton("question", "New Question"),
)




server <- function(input, output) {

  data <- eventReactive(input$question,{

    a <- sample.int(10,1)

    paste("Enter",a)

    })

  output$out <- renderText({data()})

}

shinyApp(ui,server)

【问题讨论】:

  • 很乐意提供帮助,但我很难理解该应用程序应该做什么。您能否澄清numericInput 和两个actionButtons 的作用?也许给出一个简单的事件分解形式:用户必须做 A。然后 B 发生。然后用户按下按钮 C。然后 D 发生......
  • 谢谢!这要简单得多。用户A(唯一的用户)按下一个按钮来获得一个随机选择的号码。然后用户 A 使用 inputNumeric 选择该数字。然后用户 A 按下应答按钮。如果它的数字相同,则有一些反馈(“正确”)/(“错误”)。我的问题是,当我将值存储在 eventReactive(问题按钮)中时,我无法从另一个 eventReactive(答案按钮)引用该值。

标签: shiny shiny-reactivity


【解决方案1】:

这就是我要做的事情

ui <- fluidPage(

      textOutput(outputId = "out"),
      numericInput(inputId = "inn", label = "", value = 0),
      actionButton("answer", "Answer"),
      actionButton("question", "New Question"),

)

server <- function(input, output, session) {

    data <- reactiveValues(number = NULL)

    output$out <- renderText({
        if (is.null(data$number))
            "Press 'New Question' button"
        else
            paste("Enter", data$number)
    })

    observeEvent(input$question, {
        data$number = sample(10, 1)
     })

    observeEvent(input$answer, {
        req(data$number, input$inn)
        if (data$number == input$inn)
            print("Correct")
            # Do something exciting
        else
            print("Incorrect")
            # Do something else
    })

}

shinyApp(ui,server)

IMO 最好将反应性数据和输入/输出生成分开。我的意思是在上面的例子中我们使用了

  • reactiveValues 跟踪不断变化的数据,以及
  • observeEvent 监控按钮点击,这可能会改变我们反应数据的特定元素,
  • renderText 可以打印固定文本或反应数据。

【讨论】:

  • 这太完美了!我刚刚学到了很多关于反应性值和使用反应性数据的知识。谢谢毛里茨!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多