ShinyR:单击按钮后仅运行一次代码

sun*_*nny 5 r shiny

一旦用户选择了输入参数,我就会在 Shiny 应用程序中运行相当耗时的计算。为了确保计算不会运行不必要的时间,我创建了以下操作按钮:

 actionButton('seeData','see Data' )
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用以下代码仅在每次单击按钮时运行一次耗时的计算(并且在没有单击按钮时从不运行):

 observeEvent( input$seeData, {

   ...long, includes several function calls...  

})
Run Code Online (Sandbox Code Playgroud)

observeEvent我内部确实引用了其他输入参数。

我发现,无论我调整输入参数多少次,直到按下按钮才第一次运行计算。但是,一旦我按下按钮一次,只要更改任何输入参数,就会运行计算。当我只按一次按钮时,为什么代码会运行第二次、第三次、第四次(等等)?

我的目标似乎只是典型的用例,但我认为有一些observe我不理解的棘手isolate问题。observeEvent我做错了什么以及如何实现一键一计算功能?

Ser*_*dez 0

这里observeEvent我们可以看到和的用法的描述eventReactive。有趣的是在示例中,您可以看到函数的反应性如何仅在单击按钮时执行。

该方法是定义一个EventReactive包含要显示的数据的变量。这将使函数即使输入发生变化也能保留其值。仅当按下按钮时它才会改变。