如何在 R闪亮中使操作不间断

2024-06-12

在我闪亮的应用程序中,我有一个应该不断更新自身的输出。但是每当我执行长时间运行的计算时,输出就会暂停。我的问题是:如何让输出持续不间断地运行?

请参阅下面的简短演示: 时钟每一秒刷新一次,但如果我单击运行 5 秒的按钮,时钟就会暂停。

library(shiny)

ui <- fluidPage(
    actionButton("button","Expensive calcualtion(takes 5 seconds)"),
    tags$p("Current Time:"),
    textOutput("time"),
    tags$p("Result from clicking button:"),
    textOutput("result")
)

server <- function(input, output, session) {
    output$time <- renderText({
        invalidateLater(1000)
        as.character(Sys.time())
    })

    observeEvent(input$button,{
        Sys.sleep(5)
        output$result <- renderText(runif(1))
  })
}

shinyApp(ui, server)

我尝试使用future and promises使长时间运行的进程异步运行,但它不起作用。哪里错了?那么有没有更好的方法来实现这个目的呢?

library(shiny)
library(future)
library(promises)
plan("multisession")

ui <- fluidPage(
    actionButton("button","Expensive calcualtion(takes 5 seconds)"),
    tags$p("Current Time:"),
    textOutput("time"),
    tags$p("Result from clicking button:"),
    textOutput("result")
)

server <- function(input, output, session) {
    output$time <- renderText({
        invalidateLater(1000)
        as.character(Sys.time())
    })

    process <- eventReactive(input$button,{
        future({
            Sys.sleep(5)
            runif(1)
        })
    })

    output$result <- renderText(process())

}

shinyApp(ui, server)

任何帮助表示赞赏!


感谢@Shree 指出解决方案。读完后response https://github.com/rstudio/promises/issues/23来自乔城。看来关键是:

通过不让 Promise 成为最后一个表达式来隐藏 Shiny 的异步操作。

通过创建一个反应值并将承诺分配给它来解决问题observeEvent作为副作用。

server <- function(input, output, session) {

  output$time <- renderText({
    invalidateLater(1000)
    as.character(Sys.time())
  })

  process <- reactiveVal()

  observeEvent(input$button,{
    output$isbusy <- renderText("busy") # a simple busy indicator
    future({
      Sys.sleep(5)
      runif(1)
    }) %...>%
      process()
    # Hide the async operation from Shiny by not having the promise be the last expression
    NULL # important
  })

  output$result <- renderText({
    output$isbusy <- renderText("") # a simple busy indicator
    process()
  })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R闪亮中使操作不间断 的相关文章

  • orderBy 随递减排序和递增排序的变化

    是否有一种标准方法可以按几列对 data frame 进行排序 但会发生减少或增加的变化 例如 您可能希望按一个变量 递减 和下一个变量 递增 对 data frame 进行排序 有没有类似的东西 mydf order mydf myvar
  • 中断、保存并稍后继续循环的最佳方法

    事情是这样的 我有一个需要几天时间才能运行的循环 我想中断循环 检查进度 然后稍后继续 目前 我正在使用以下内容 for i in 1 100000 Sys sleep i 2 5 print i write csv i i csv 我检查
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • R:使用 dcast 时包含没有条目的因子

    我在数据帧上使用 reshape2 函数 dcast 其中一个变量是某些级别未出现在数据框中的因素 但我会将所有值包含在创建的新列中 例如 假设我运行以下命令 library reshape2 dataDF lt data frame id
  • 使用 geom_bar 和 stat="identity" 绘制平均值的 hline

    我有一个条形图 其中确切的条形高度位于数据框中 df lt data frame x LETTERS 1 6 y c 1 6 1 6 1 g rep x c a b each 6 ggplot df aes x x y y fill g g
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • R 在 Ubuntu 中通过代理连接

    我在 Ubuntu 12 04 上安装了 RStudio 0 97 168 当我尝试安装 gstat 库时出现以下错误 install packages gstat dependencies TRUE Warning in install
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • 使用 roxygen2 记录数据集

    我正在尝试使用 roxygen2 记录 R 包中的一些数据集 仅考虑其中之一 I have mypkg data CpG human GRCh37 RDa 其中包含一个名为的对象CpG human GRCh37 和一个名为 mypkg R
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • 为什么 quosures 在 group_by() 中起作用,但在 filter() 中不起作用?

    我正在构建一个函数 我将根据字符串操作数据框 在该函数中 我将根据字符串构建一个列名称 并使用它来操作数据框 如下所示 library dplyr orig df lt data frame id 1 3 amt c 100 200 300
  • R 中整数向量的大小

    我原以为 R 有一个用于存储对象的标准开销 看起来是 24 字节 至少对于整数向量而言 但一个简单的测试表明它比我意识到的要复杂 例如 采用长度为 100 的整数向量 使用随机采样 希望避免任何可能存在的偷偷摸摸的序列压缩技巧 https
  • 根据感兴趣的特定单词绘制高度相关的单词[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试绘制一个单词的最高相关性 例如 我想绘制 鲸鱼 一词的最高十个相关性的图表 有人可以帮我执行类似的命令吗 如果有帮助的话我已经安装
  • 在 R 绘图上使用鼠标书写?

    我使用创建了散点图plot R 中的函数 有没有可能在这个图上画图 我想添加一条直线并获取它的参数 但在我看来abline 可能会很不方便 我想画很多条线 然后选择一条最合适的 我怎样才能完成这个任务 看看 RStudio 和这个例子 li
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • R/ggplot2:如何匹配重叠区域图中的图例和绘图颜色?

    我有两个面积图 称为 蓝色 和 绿色 其中green大部分是在blue情节 但在极少数点上 它高于blue阴谋 我想使用透明度说alpha 0 2对于两者 并且还能够为每个指定颜色 我现在的问题是 自从green情节主要是在blue地块 其
  • 动态显示仪表板页面

    我有一个实用的闪亮应用程序 它使用shinydashboard包裹 新功能需要特定于用户的行为 例如 针对不同的用户名使用不同的数据集 因此我打算 显示登录表单 验证凭据并设置反应值LoggedIn to true如果成功的话 显示实际情况
  • 用于检查和批量线性模型的数据表选项

    我想知道是否有data table用于从数据集中批量处理线性模型并首先进行检查的选项 我需要对每个唯一标识符运行一堆线性模型 但首先我需要进行检查 对于每个唯一的 id 和年份 我需要检查是否有至少 24 个月的先前每月数据 但不超过 60
  • 修改x轴刻度标签

    我正在尝试更改由生成的箱线图的 x 轴刻度标签ggplot2 x 轴是一个分类变量 HabFac 我想要的是将其刻度更改为 6 个化学品 A E 下面是我的代码 raw data read table Read data p TT ggpl

随机推荐

  • 不使用 DAO 压缩 Microsoft Access 数据库

    我用CDatabase类开一个ACCDB访问数据库 司机是 T Microsoft Access Driver mdb accdb 我可以打开并使用数据库 已经这样做很多年了 if DatabaseExist m strMDBPath AJ
  • 处理 PHP 中的会话劫持

    阅读了 Stackoverflow 上有关会话劫持的许多问题 我发现验证用户会话的唯一 解决方案 是检查用户代理 这是一个薄弱的保护层 我什至懒得去检查实施它 所以 我想知道你们实施了哪些解决方案 您是否使用 PHP 的本机会话或者是否有更
  • 是否可以使用 JavaScript 导入 HTML?

    我有一些具有相同页脚的 html 页面 使用 JavaScript 并且仅使用 JavaScript 我可以在其中导入另一个 html 页面吗 下面介绍了如何仅使用 JavaScript 向页面添加页脚 2022 代码 使用fetch ht
  • 没有名为 pandas_datareader 的模块

    我刚刚安装了pandas datareader using pip install pandas datareader运行成功 现在我尝试将它用于教程 当我尝试导入时出现此错误 import pandas datareader as pdr
  • 用户“NT AUTHORITY\ANONYMOUS LOGON”的 Web 应用程序登录失败

    我看到很多人都遇到这个错误 但他们的情况似乎都与我的有点不同 我有一个 ASP NET 4 0 Web 应用程序 它在 Windows 2003 Server 上的 IIS 6 0 中运行 当我远程到 Web 服务器框并登录并访问该站点时本
  • ASP.NET MVC 中是否有嵌套母版页?

    我想知道 MVC 框架是否可以利用嵌套母版页 如果是这样 有人有一些关于如何实现这一目标的信息吗 我们经常使用嵌套母版页 以便将布局与标准包含和站点范围标记分开 如下所示 站长
  • 从终端运行 Keycloak 时出现 Spring Boot/安全类加载器问题

    我将 Spring Boot 和 Spring Security 与 Keycloak 结合使用 构建工具是gradle 当我跑步时 gradlew bootRun该应用程序运行完美 如果我使用生成的脂肪罐 即java jar myapp
  • 正则表达式对系列的普罗米修斯评分

    我使用以下查询来根据名称获取一些指标 name bus listener processed 有多个指标与此名称匹配 并且多个应用程序正在发布这些指标 我正在尝试计算此费用 rate name bus listener processed
  • Apache James 学习资源 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 该计划是创建一个列表阿帕奇 詹姆斯 http james apache org学习资源 涉及从设置到使用
  • 橡皮擦在 iOS 绘图中不起作用

    我正在做一个绘图项目 其中有一个橡皮擦选项 下面给出的代码适用于我启动应用程序并绘制一些线条并继续使用橡皮擦时的代码 它工作正常 我得到了橡皮擦效果 现在第二种情况是我画了大约10条线 然后单击 撤消按钮 并撤消整个事情 然后我重做整个事情
  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • PL/SQL 过程成功完成但没有显示任何内容

    我有以下过程代码 create or replace PROCEDURE Ventas cliente p DNI IN CHAR IS CURSOR c pedidos clientes IS SELECT FROM Pedidos ve
  • Android:直接从浏览器下载文件

    我试图让 Android 浏览器下载特定类型 xxx 的文件 这样我就可以设置一个应用程序与其关联 我已经成功完成了关联部分 因为我已经做到了 以便在资源管理器应用程序中单击正确类型的文件会加载适当的应用程序 我希望这会转移到浏览器 这样如
  • 有一些 numpy.map 吗?

    我可能在这里遗漏了一些明显的东西 但我遗漏了一个功能numpy map 这与 Python 的相同map函数 但将输出收集在numpy大批 例如 我可以有一个图像生成器genImage i 生成 2D 图像 大小 m n 基于单个输入 我想
  • 有没有一种方法可以在 TreeView.Nodes 集合中搜索 TreeNode.Text 字段?

    像这样 TreeNode treeNodes treeView Nodes Find searchString true 但我希望它在text字段而不是name field 我不知道有任何内置方法 但你可以使用 LINQ TreeNode
  • 我想在数据表中使用 Div 结构而不是 Table。是否可以?

    我想用数据表 https datatables net 用div结构代替表格 目的是满足设计要求 有什么可能的方法或替代方案吗 不 您将无法执行此操作 Datatables 的核心仅适用于表格元素和子 thead tbody tfooter
  • 忽略批处理文件中的百分号

    我有一个批处理文件 可将文件从一个文件夹移动到另一个文件夹 批处理文件是由另一个进程生成的 我需要移动的一些文件中包含字符串 20 move y myserver myfolder file 20name txt myserver othe
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 如何在 R闪亮中使操作不间断

    在我闪亮的应用程序中 我有一个应该不断更新自身的输出 但是每当我执行长时间运行的计算时 输出就会暂停 我的问题是 如何让输出持续不间断地运行 请参阅下面的简短演示 时钟每一秒刷新一次 但如果我单击运行 5 秒的按钮 时钟就会暂停 libra