有没有办法在 Shiny 中预先缓存输出?

2024-07-01

我有下面的闪亮应用程序。我第一次选择任何给定数字时需要 3 秒才能加载结果。由于bindCache,如果我稍后选择相同的数字,我会立即得到结果。

但是,我不想手动选择所有 10 个数字,只是为了让我的应用程序在呈现之前做出响应。有什么办法可以提前缓存一组输入吗?在此示例中,我想缓存结果input$num值 1 到 10。在实际的应用程序中,大约有 5 个输入,每个输入有 5 个可能的值,代表我想要缓存的 25 个可能的结果。

library(shiny)

ui <- fluidPage(
  sliderInput('num', 'Pick a number:', min = 1, max = 10, value = 1),
  textOutput('out')
)

server <- function(input, output, session) {
 output$out <- reactive({
   Sys.sleep(3)
   paste("Your number is:", input$num)
 }) %>% bindCache(input$num)
}

shinyApp(ui, server)

Note:

一种回应可能是我应该手动预先计算这些结果。在真实的应用程序中大部分时间来自gt::render_gt and gt::gt_output on gt我提前创建的表格。我相信这些函数只能在反应式上下文中使用(意味着只能在闪亮的应用程序中使用?)

Edit:

作为旁注,我原来的问题是通过使用解决的gt::as_raw_html在闪亮的应用程序之前的一步中渲染表格。但仍然留下这个问题,因为在其他情况下有时会出现问题。


怎么样使用一个执着的缓存,运行应用程序一次,您可以根据需要手动更改所有输入(我还包括一个自动版本,我对此不太满意,可能会发生 b/c 竞争条件),然后在后续运行中,您可以正确获取所有值缓存?

library(shiny)
library(magrittr)
## change path to a non temp diretcory to keep that even after reboot
shinyOptions(cache = cachem::cache_disk(file.path(dirname(tempdir()), 
                                        "myapp-cache")))

xl <- 1:3
yl <- 1:3

ui <- fluidPage(
   sliderInput("x", "x", min(xl), max(xl), min(xl), 1),
   sliderInput("y", "y", min(yl), max(yl), min(yl), 1),
   verbatimTextOutput("z"),
   actionButton("fill", "Fill Cache")
)

server <- function(input, output, session) {
   idx <- idy <- 1
   r <- reactive({
      message("Doing  expensive computation...")
      Sys.sleep(2) ## simulate expensive op
      input$x + input$y
   }) %>% bindCache(input$x, input$y)

   observe({
      req(input$fill)
      if (idx != length(xl) + 1 || idy != length(yl)) {
         ## need the invalidateLater approach 
         ## to allow shiny reacting on the change
         ## not sure whether we cannot trip over race conditions
         ## recommendation: do it once by hand (it's persistent anyways ;)
         invalidateLater(500, session) 
         if (idx == length(xl) + 1) {
            message("Updating y:", idy)
            idx <<- 1
            idy <<-  idy + 1
            updateSliderInput(session, "y", value = yl[[idy]])
         } else {
            message("Updating x:", idx)
            updateSliderInput(session, "x", value = xl[[idx]])
            idx <<- idx + 1
         }
      }
   })

   output$z <- renderText(r())
}

## Start app and set all values
shinyApp(ui, server)

## Close app and restart
## Cache is now filled
shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 Shiny 中预先缓存输出? 的相关文章

  • R:读取多个Excel文件,提取第一个工作表名称,并创建新列

    我有多个 Excel 文件 并且它们具有唯一的工作表名称 在我的情况下是文件创建日期 我批量阅读它们 需要将工作表名称分配给新列 id 中的每个文件 我知道如何制作数字 id 或 id 文件名 但找不到将工作表名称获取为 id 的方法 li
  • 使用清单修改 Latex 文档中 R 代码的字体颜色

    我试图在 Latex 文档中突出显示 R 代码 但我似乎无法更改代码框中的字体颜色 举个例子 我认为commentstyle color red 应该给我红色字体的评论 但评论显示为蓝色或黑色 不太清楚 另外 我认为backgroundco
  • 使用 R 的 qdap 包估计文档极性,无需使用 sendSplit

    我想申请qdap s polarity函数对文档向量进行处理 每个文档可以包含多个句子 并获得每个文档相应的极性 例如 library qdap polarity DATA state all polarity Results 1 0 81
  • 基于 R 中多个现有列的计算的新列

    R df orginal 中的原始数据框 AB CD EF GH A 0 12 M A 0 13 F A 0 14 F A 1 16 M A 1 17 F A 1 18 M A 1 18 M A 2 0 78 M A 2 0 12 M A
  • 如何将 unicode 符号转换为 ggplot 的因子水平?

    我想在 ggplot 图例中获取一个符号 而不在比例中指定 我要这个 df lt data frame a 1 5 b factor 1 5 labels c 1 4 u2265 5 c 10 14 ggplot df aes a c co
  • 带有预先计算值的 geom_boxplot

    过去 我已经能够使用 ggplot2 创建箱线图 方法是提供下须线 下分位数 中位数 上分位数和上须线以及 x 轴标签 例如 DF lt data frame x c A B min c 1 2 low c 2 3 mid c 3 4 to
  • update() 具有局部协变量的函数内的模型

    我需要从函数内部更新回归模型 理想情况下 该函数应该适用于任何类型的模型 lm glm multinom clm 更准确地说 我需要添加函数内部定义的一个或多个协变量 这是一个例子 MyUpdate lt function model ra
  • ggplot2 中的迷你图

    Tufte Sparklines 如他的美丽的证据 已被复制到基础图形作为 的一部分耶鲁工具包 https cran r project org web packages YaleToolkit index html并由此得到进一步完善这个
  • 使用 sf 与多多边形几何体进行分组(使用 R)

    我有一个放在一起的自定义形状文件 当我一次绘制所有内容时 效果很好 但我想按某些变量进行分组来绘制特定形状的区域 例如 county region sales washoe 1 5 carson city 1 10 clark 2 15 h
  • R 中的数据转换

    我有一个包含 2 列的表格 我想根据第二列绘制值当前行之前的 5 行中第一列中的 N 个值的总和 如何在 R 中实现这种转换而无需外部预处理 Example 文件 数据 csv 7 2 4 8 3 6 7 10 9 3 0 4 8 9 3
  • 将函数参数传递给公式

    我试图理解为什么 foo function d y x fit with d lm y x foo myData Y X 不起作用 例如 myData data frame Y rnorm 50 X runif 50 对我来说似乎棘手的一点
  • 将 geom_text 与 ggplot2 中的 geom_vline 对齐

    I used vjust作为解决方法并详细阐述 通过尝试和错误可以接受的距离 但这有时非常耗时且变化 与字体大小和轴比例 有没有更好的方法来自动对齐示例中的文本 library ggplot2 ggplot data mtcars aes
  • 使用 ggplot2 将抖动应用于箱线图中的异常值数据

    您知道如何将抖动仅应用于箱线图的异常值数据吗 这是代码 ggplot data a aes x y a V8 geom boxplot outlier size 0 5 geom point data a aes x y a V8 54 c
  • R 闪亮动态输入

    我想构建一个 R 闪亮应用程序 它具有动态输入 要求用户输入数字 然后根据该输入生成另外 4 个输入字段 这就是我的想法 library shiny Define UI for random distribution application
  • 使用其他数据填充缺失值?

    A lt data frame Item A c 00EF 00EF 00EF 00EF 00EF 00FR 00FR Item B c NA NA NA NA JAMES RIVER NA NA B lt data frame Item
  • rbind 两个 data.frame 保留行顺序和行名称

    我有一个清单data frame我想将对象行相互追加 即merge all T 然而 merge似乎删除了我需要保持完整的行名称 有任何想法吗 例子 x data frame a 1 2 b 2 3 c 3 4 d 4 5 row name
  • 组合:rowwise()、mutate()、cross(),用于多个函数

    这与此有某种关系question https stackoverflow com questions 67347128 rownames to column does not work after rowwise properly 6734
  • 使用 auto.key 在晶格中符号填充颜色

    我正在使用一个情节xyplot in lattice R 15 2 格子 0 20 13 其中我想通过标记的形状来区分几个组 我需要使用一个向下的三角形 它只能作为空心符号使用 pch 25 与向上三角形不同 向上三角形可用作填充 pch
  • 使用 auto.key 在晶格中符号填充颜色

    我正在使用一个情节xyplot in lattice R 15 2 格子 0 20 13 其中我想通过标记的形状来区分几个组 我需要使用一个向下的三角形 它只能作为空心符号使用 pch 25 与向上三角形不同 向上三角形可用作填充 pch
  • 将长文本换行到文本框中

    我有以下可重现的系数图 library tidyverse tribble term estimate lower upper text a 25 2 3 Lorem ipsum dolor sit amet consectetur adi

随机推荐

  • 将 std::lock_guard 与 try_lock 一起使用

    有什么办法可以告诉我std lock guard打电话try lock代替lock当它获取互斥锁时 我能想到的唯一方法是使用std adopt lock if mutex try lock Handle failure and return
  • 一个类的多个实例

    我正在尝试用 python 编写各种动物的生活模拟 不可能命名我将要使用的类的每个实例 因为我无法知道会有多少个实例 所以 我的问题是 如何自动为对象命名 我正在考虑创建一个 Herd 类 它可以是该类型的所有动物同时存活 嗯 通常 您只需
  • 解释 Spark Structured Streaming 执行器和 Kafka 分区之间的映射

    我已经在具有 4 个分区的 Kafka 主题上部署了一个由 4 个工作人员组成的结构化流 我假设将为 4 个分区部署 4 个工作人员 工作人员 分区之间具有一对一的映射 但是 事实并非如此 所有分区都由同一个执行器提供服务 我通过检查执行器
  • Asp.Net Mvc 5 图像不显示

    我有相同的图像Content and Views文件夹 我正在尝试显示图像 如下所示 img src Content Images download png alt Content folder br br img src Views Ho
  • PyCharm 中基于类型的自动补全

    我正在使用 PyCharm 进行 python 编码 PyCharm 中的自动完成功能不如 IntelliJ Java 中的自动完成功能 考虑下面的代码 a 1 2 3 4 a 在这种情况下 当我按下dot PyCharm 提供了全套自动完
  • WPF DataGrid 在行删除后失去焦点

    我正在使用 WPF DataGrid 通过键盘 删除 键进行行删除 但是 删除该行后 DataGrid 失去焦点 并且 DataGrid SelectedIndex 1 与WinForm datagrid相比 删除一行后 焦点自动转移到下一
  • static const 和 constexpr 变量有什么区别? [复制]

    这个问题在这里已经有答案了 我明白 一个constexpr variable可以在编译时使用 对于模板 或者例如 static assert 但如果我想在没有 constexpr 的情况下做到这一点 我可以static const 自从 C
  • 为什么 IE7 不能正确地将
     块复制到剪贴板?                
                

    我们注意到 IE7 对 Stack Overflow 上发布的代码块有奇怪的行为 例如 这个小代码块 public PageSizer string href int index HRef href PageIndex index 从IE7
  • 如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

    我正在使用 XCode 4 2 并使用故事板构建了我的 UI 我需要创建一个在 UITableView 上方和下方有内容的视图 我可以通过使用 UIViewController 来实现这一点 UITableViewController 不允
  • 如何在远程 shell 上接收 stdio 和 error_logger 消息

    在花了很长时间让 rb 在远程 shell 上工作后 我想在远程 shell 上获取 stdio 错误记录器消息 我已经研究了更改 group leader 但似乎需要更改所有正在运行的进程的 group leader 我的实验发现它非常不
  • VB.NET GetElementById 内部文本

    好的 这是我的 html 行及其 ID
  • 如果子查询包含 NULL,带有“IN”子查询的 SQL select 不会返回任何记录

    我遇到了这个有趣的行为 我认为左连接是可行的方法 但仍然希望解决这个问题 这是错误还是设计行为 有什么解释吗 当我从左表中选择记录时 右表的子查询结果中不存在值 如果子查询结果有空值 则不会返回预期的 缺失 记录 我希望编写此查询的两种方法
  • D3.js -- 序数尺度(版本 3 到版本 4)

    我正在学习 Udemy 的 D3 js 课程 不幸的是 由于新版本 D3 js 的发布 没有任何关于其新语法的最新教程 因此我浏览了他们的 API 的 wiki 话虽如此 我一直困惑于如何翻译这段代码 版本 3 我在学习序数尺度 var d
  • 为什么在 VB6 中将 True 强制转换为整数的结果是 -1?

    在 VB6 中 强制True转换为整数会得到值 1 为什么会这样呢 这背后的原因是什么 在大多数其他编程语言 C C Java Perl Python 等 中 true 在强制转换为整数时变为 1 在布尔代数中 值 1 用于表示 true
  • 在条件 for 循环中渲染 React

    我在网页中有静态信息 class MyStaticWebPage extends React Component render return
  • PostGIS 插入 WKT 后会自动转换吗?

    我对 PostGIS 还很陌生 所以请耐心等待 假设我有一个表定义如下 CREATE TABLE gtest name varchar geom geometry 首先 插入 我正在做类似的事情 INSERT INTO gtest VALU
  • 如何在android项目中使用Roboto字体[重复]

    这个问题在这里已经有答案了 我开发了一个android项目 在此项目中 文本字体默认为 android sans 现在我想将整个项目的默认文本字体替换为 roboto 字体 我怎样才能做到这一点 您可以从这里下载 Roboto 字体 htt
  • 将数组项合并到字符串中[重复]

    这个问题在这里已经有答案了 如何将所有数组项合并为一个字符串 Use the implode功能 http php net manual en function implode php 例如 fruits array apples pear
  • linux键盘驱动源码

    我一直致力于为 Linux 制作自己的键盘驱动程序 所以我发现了这两个链接 usbkbd c http lxr free electrons com source drivers hid usbhid usbkbd c and atkbd
  • 有没有办法在 Shiny 中预先缓存输出?

    我有下面的闪亮应用程序 我第一次选择任何给定数字时需要 3 秒才能加载结果 由于bindCache 如果我稍后选择相同的数字 我会立即得到结果 但是 我不想手动选择所有 10 个数字 只是为了让我的应用程序在呈现之前做出响应 有什么办法可以