有没有办法阻止在 R Shiny 中打开下载页面?

2023-11-23

在闪亮的应用程序中单击下载按钮后,将打开一个新页面来初始化下载。但是,我的下载处理程序需要一些时间来生成可下载文件,该文件显示在闪亮主页面的进度栏中。有没有办法让用户留在主页上或阻止下载页面打开或推迟下载页面直到文件生成为止?

非常感谢

Marcus


Vincent 的解决方案使用两个按钮,一个用于计算的操作按钮和一个用于下载的下载按钮,这是我使用的解决方案。该解决方案的另一个好处是shinyIncubator 包中也包含进度条。

对我的代码的解释,以防其他人想做同样的事情:

ui.R 有一个操作按钮和一个动态下载按钮:

actionButton("makePlots", "Calculate Results"),
uiOutput("download_button")

以及进度条的进度初始化:

  mainPanel(
    progressInit(),
      uiOutput("mytabs")) # dynamic rendering of the tabs

server.R 稍微复杂一些。因此,仅当有要下载的内容时才会显示下载按钮,我使用了动态 uiOutput 和以下代码:

    output$download_button <- renderUI({
          if(download){
              downloadButton("downloadPlots", "Download Results")
          }
     })

下载按钮仅在以下情况下显示download==TRUE。在 server.R 启动时,变量被初始化:download<-FALSE

由于每次单击操作按钮都会增加 1,因此我添加了一个计数器(初始值 0),该计数器在每次“使用”操作按钮后都会增加。原因是第一个 if 语句。

makePlots<-reactive({

    if(input$makePlots>counter){ # tests whether action button has been clicked

       dir.create("new_directory_for_output")

       withProgress(session, min=1, max=15, expr={ # setup progress bar

       for(i in 1:15){

         png(paste0("new_directory_for_output/plot",i,".png"))
         plot(i)
         dev.off()

         setProgress(message = 'Calculation in progress',
              detail = 'This may take a while...',
              value=i)

       } # end for

       }) # end progress bar

       counter<<-counter+1 # needs the <<- otherwise the value of counter
                           # is only changed within the function

       download<<-TRUE     # something to download     

     } # end if

}) # end function

在此阶段,函数 makePlots() 没有输出,也没有在任何地方调用,因此它什么也不做。因此,我将 makePlots() 放在每个选项卡的开头,这样无论用户位于哪个选项卡上,一旦单击操作按钮,就会制作并保存绘图。

最后一块拼图是下载处理程序:

output$downloadPlots <- downloadHandler(

    filename = function() { my_filename.zip },
    content = function(file){

      fname <- paste(file,"zip",sep=".") 
      zip(fname,new_directory_for_output) # zip all files in the directory
      file.rename(fname,file)

      unlink(new_directory_for_output,recursive = TRUE) # delete temp directory
      download<<-FALSE # hide download button 
    }

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

有没有办法阻止在 R Shiny 中打开下载页面? 的相关文章

  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • 按下按钮时应用不同的样式

    有没有办法在按下按钮时将样式应用于按钮 如果我有一种风格样式 xml
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY

随机推荐

  • 在 Scala 中从类型别名创建对象 [重复]

    这个问题在这里已经有答案了 如何从 scala 中的类型别名构造一个对象 type MyType List Int println List Int println MyType error not found value MyType 这
  • MongoDB 查找日期范围是否与其他日期重叠

    我有许多文档 其架构如下所示 每个文档都包含 开始日期 结束日期 如下架构所示 有没有一种简单的方法可以在保存新文档之前知道新文档的开始日期 结束日期是否会与以前保存的文档开始日期 结束日期重叠 谢谢 title owner notes s
  • ElasticSearch:禁用 Groovy 时对 _score 字段进行聚合

    我见过的每个例子 例如 ElasticSearch 在 score 字段上聚合 用于对 score 字段进行聚合或与 score 字段相关的聚合似乎需要使用脚本 由于 ElasticSearch 出于安全原因默认禁用动态脚本 有没有什么方法
  • 扫描 NFC 标签后是否可以启动应用程序?

    我有一个 NFC 标签 我想编写一个 Android 应用程序 当用手机扫描 NFC 标签时 该应用程序会自动启动并从 NFC 获取数据 假设设备已打开 NFC 并且手机上没有运行其他应用程序 这应该可以工作 我发现一些应用程序可以启动另一
  • 带有实时数据的 NVD3 折线图

    我有一个使用 NVD3 js 编写的非常简单的折线图 我写了一个基于计时器的简单重绘 从我见过的示例中提取 但出现错误 未捕获的类型错误 无法读取未定义的属性 y JS 是 var data key Long values getData
  • C++ 中 lambda 派生的隐式函子的生命周期是多少?

    问题很简单 当我编写 lambda 表达式时 C 编译器自动生成的函子对象的生命周期是多少 我进行了快速搜索 但找不到满意的答案 特别是 如果我将 lambda 传递到某个地方 并且它在那里被记住 然后我超出范围 那么一旦我的 lambda
  • 将 JSON 对象映射到 Swift 类/结构

    我需要 复制 从远程 Web API 服务以 JSON 格式返回的实体 它看起来像这样 field1 some id entity name Entity1 field2 some name details1 field1 11 field
  • Firebase 在 Android 适配器中添加监听器

    我对 firebase 还很陌生 我正在尝试了解它 我有一个正在注册的适配器ValueEventListener每次创建时 如果我不分离它 当我旋转手机并且适配器在片段中被破坏 重建时 侦听器是否会增加 或者 firebase 是否足够聪明
  • 如何使用 JSF 和导航规则创建带参数的 GET 请求?

    有没有办法使用 h outputLink 其他 JSF 标记或代码创建 html 链接 以创建带有请求参数的非 faces 请求 HTTP GET 例如我有以下导航规则
  • 从 F# 中具有 N 个不同索引的序列中取出 N 个元素

    我是 F 新手 正在寻找一个采用 N 索引和序列并给我 N 个元素的函数 如果我有 N 个索引 它应该等于 concat Seq nth index0 Seq nth index1 Seq nth indexN 但它应该只扫描序列中的 in
  • 当基础镜像为 centos 与 ubuntu:trusty 时,以 shell 形式运行 CMD/ENTRYPOINT 时,不同进程以 PID 1 运行

    使用以下 dockerfile 构建并运行图像 Dockerfile1 FROM ubuntu trusty ENTRYPOINT ping localhost 现在运行以下命令来查看容器中运行的进程 docker exec it
  • “String[]::new”是什么意思?

    我正在学习如何使用流 但我遇到了这个方法的问题 public static String inArray String array1 String array2 return Arrays stream array1 filter str
  • 何时使用 AtomicReference (Java)?真的有必要吗?

    我已经多次使用 AtomicLong 但我从未需要使用 AtomicReference 看来 AtomicReference 可以做到其中之一 我从另一个 stackoverflow 复制了这段代码 问题 public synchroniz
  • 从私钥生成 ssh 公钥

    我有私人 ssh id rsa 密钥 我如何从中生成公钥 选项 y输出公钥 来自linux手册ssh keygen命令 y 此选项将读取私有 OpenSSH 格式文件并打印 一个 到标准输出的 OpenSSH 公钥 ssh keygen y
  • Google Drive API v3:没有任何方法可以获取 google 文档的下载网址吗?

    Google Drive API v2 到 v3迁移指南 says ExportLinks 字段已从文件中删除 要导出 Google 文档 请改用 files export 方法 我不想立即导出 下载 文件 files export 实际上
  • 自动调整 JButton 图标大小

    所以我有一个 JButtons 我在其中添加了图标 图标最初太大 所以我事先调整了它们的大小 效果很好 除了当我调整窗口大小时 JButton 会更改大小 但图标不会更改 这是有问题的 有没有办法让图标只填充它所附加的 JButton 一些
  • 在 Node.js 中等待多个回调

    我有一个 Node js 应用程序 其中可能会调用多个函数 具体取决于多个因素 但在最后一个回调后仅调用最后一个函数 这是我得到的简化版本 if foo bar function1 arg1 function val1 doWhatever
  • WPF ListView 非活动选择颜色

    I m creating a WPF application where several ListView selections are made in a row similar to the iTunes browser The pro
  • 将函数应用于 pandas 数据框中的组

    我正在尝试将简单的函数应用于 pandas 中的组 我有这个数据框 我可以根据它进行分组type df pandas DataFrame id a b c d v 1 2 3 4 type X Y Y Y set index id df g
  • 有没有办法阻止在 R Shiny 中打开下载页面?

    在闪亮的应用程序中单击下载按钮后 将打开一个新页面来初始化下载 但是 我的下载处理程序需要一些时间来生成可下载文件 该文件显示在闪亮主页面的进度栏中 有没有办法让用户留在主页上或阻止下载页面打开或推迟下载页面直到文件生成为止 非常感谢 Ma