处理闪亮应用中多个操作按钮的点击次数

时间:2014-07-10 01:59:35

标签: r shiny

如果我在闪亮的应用程序中有多个动态生成的动作按钮,有没有办法知道单击了哪个动作按钮并执行了一些计算,并点击了按钮的ID?

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,虽然在我的情况下按钮不是动态生成的。从问题中不清楚是否强调动态生成"方面。如果是这样,我的答案对你没什么帮助......

为了简化我的回答,我将问题减少到以下几点:

  • 我的UI中有两个actionButtonsid="increase"id="decrease"),我有一个整数变量(var)和文本输出(id="actual_value")显示实际价值。其中一个按钮应该将值增加一个,另一个应该减少它,显然输出应该显示更新的值。

解决方案是:

    shinyServer(function(input, output, session) {
         increase <- reactive({
            if( input$increase == 0 ) return(  )
            var <- var + 1
          })

          decrease <- reactive({
            if( input$decrease  == 0 ) return(  )
            var <- var - 1
          })

          actual.value <- reactive({
            increase()
            decrease()
            var
          })

          output$actual_value <- renderText({
            paste("Actual value is: ", actual.value() )
          })
    })

所以解释是有两个反应输入(即按钮)和两个相应的反应表达式(increasedecrease)。第三个反应式表达式(actual.value)取决于前两个并返回var的实际值。无功输出取决于此。

因此,您为两个按钮(increasedecrease)创建两个单独的反应式表达式,然后在第三个按钮(actual.value)中创建多路复用

这有效,但我不知道这是否是解决此类问题的最佳方法。