如果我在闪亮的应用程序中有多个动态生成的动作按钮,有没有办法知道单击了哪个动作按钮并执行了一些计算,并点击了按钮的ID?
答案 0 :(得分:1)
我遇到了类似的问题,虽然在我的情况下按钮不是动态生成的。从问题中不清楚是否强调动态生成"方面。如果是这样,我的答案对你没什么帮助......
为了简化我的回答,我将问题减少到以下几点:
actionButtons
(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() )
})
})
所以解释是有两个反应输入(即按钮)和两个相应的反应表达式(increase
和decrease
)。第三个反应式表达式(actual.value
)取决于前两个并返回var
的实际值。无功输出取决于此。
因此,您为两个按钮(increase
和decrease
)创建两个单独的反应式表达式,然后在第三个按钮(actual.value
)中创建多路复用。
这有效,但我不知道这是否是解决此类问题的最佳方法。