一旦用户选择了输入参数,我就会在Shiny应用程序中运行相当耗时的计算。为了确保计算不会运行不必要的时间,我做了以下操作按钮:
actionButton('seeData','see Data' )
然后,我尝试使用以下代码,每按一次按钮运行一次这个耗时的计算(并且从不在没有按钮的情况下运行):
observeEvent( input$seeData, {
...long, includes several function calls...
})
在observeEvent
内我会参考其他输入参数。
我发现的是,无论我多少次调整输入参数,计算都不会在我按下按钮之前第一次运行。 然而,一旦按下按钮一次,只要输入任何参数被更改,计算就会运行。当我只按一次按钮时,为什么代码会运行第二次,第三次,第四次(等)?
我的目标似乎只是typical use case,但我认为observe
或isolate
方面的observeEvent
方面有些棘手,我不理解。我做错了什么,如何实现一键一次计算功能?
答案 0 :(得分:0)
Here我们可以看到observeEvent
和eventReactive
用法的说明。有趣的是在这个示例中,您可以看到函数的反应性仅在单击按钮时执行。
方法是定义一个包含要显示的数据的EventReactive
变量。即使输入发生变化,这也会使函数保持其值。只有按下按钮才会改变。