处理闪亮应用中多个actionButtons的点击次数

jpm*_*iaz 5 r shiny

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

小智 1

我遇到了类似的问题,尽管在我的情况下按钮不是动态生成的。从问题中尚不清楚重点是否在于“动态生成”方面。如果是的话我的回答对你没有多大帮助......

为了简化我的答案,我将问题简化为以下内容:

  • actionButtons我的 UI 中有两个(id="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() )
          })
    })
Run Code Online (Sandbox Code Playgroud)

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

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

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