【问题标题】:why shiny reactive value didn't start to calculate in shinydashboard为什么闪亮的反应值没有开始在闪亮仪表板中计算
【发布时间】:2017-01-26 22:25:16
【问题描述】:

我正在编写一个有几页的闪亮仪表板。在第一页用户上传了一些数据,并且有几个基于用户输入的reactive() 表达式。其中一个表达式的计算时间超过 1 分钟,但其输出在最后一页。

我希望一旦用户上传了数据,所有的反应表达式都应该被计算出来。因此,当用户在前几页工作时,最后一个耗时可以在后台计算,用户最终移动到最后一页时,用户等待时间会更少。

但根据我的观察,情况并非如此。最后一个表达式似乎只有在最后一个页面被激活时才开始计算。

如果理论上我的期望是可能的,我会做一个可重复的小例子。

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    你是对的,反应元素只有在页面上显示时才会计算,你可以强制计算:

    output$myplot <- renderPlot({
      plot(1)
    })
    
    outputOptions(output, "myplot", suspendWhenHidden = FALSE)
    

    但它可能会减慢您的应用程序,因为 R 一次只能计算一件事。

    【讨论】:

    • 你是对的,一旦我启用它,它将在第一页竞争资源。我也尝试了优先选项,但没有奏效。
    • 这仍然不够的原因是Shiny不知道最后一页的情节尺寸应该是多少。要让它实际计算最后一页中的绘图,您需要同时设置 suspendWhenHidden = FALSE AND 明确显示高度和宽度:output$myplot &lt;- renderPlot({ plot(1) }, height = 450, width = 600) outputOptions(output, "myplot", suspendWhenHidden = FALSE)
    • 实际上我的反应式表达式用于绘图和文本框。使用 suspendWhenHidden 选项本身,它已经开始计算了。
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2021-01-17
    • 2023-03-22
    • 2016-05-02
    相关资源
    最近更新 更多