Shiny:动态 UI - downloadHandler 周围的循环?

2024-02-15

我有一个简单的示例 Siny 代码,可以正常工作(如下)。它生成几个微小数据帧的列表(server.R 中的反应对象“myout”)。数据帧的数量基于用户的输入。('NumRuns')。 我当前的代码允许用户通过 ui.R 中的 downloadButton 和 server.r 中的 downloadHandler 下载这些数据帧中的第一个。 我想知道是否可以围绕 downloadButton 和 downloadHandler 创建一个循环,以便在运行分析(actionButton)后,用户获得与“myout”中生成的数据帧一样多的下载按钮。有可能吗?

或者也许可以创建一个下载按钮,允许用户“选择”他/她想要下载哪个数据帧? 非常感谢您的任何提示 - 因为我不知道如何处理它!

我的代码(我使用以下命令运行它:runApp(launch.browser = T)

### My ui.R code:

shinyUI(pageWithSidebar(

  headerPanel("My App"),

  sidebarPanel(
    numericInput('NumRuns','Number of runs',value=3,min=3,max=10,step=1),
    br(),
    actionButton(inputId="goButton","Run!"),
    br(),
    br(),
    textInput("downloadData","Save My Data Frame:",value="Data Frame 1"),
    downloadButton('downloadData','Save my file!')

  ),

  mainPanel(
    tabsetPanel(
      tabPanel("Shows the 1st data frame",tableOutput("mydf"))
    )
  )
))


### My 'server.R' code:
shinyServer(function(input,output){


  ### Creating files for displaying and downloading

  myout = reactive({
    if(input$goButton==0) return(NULL)

    nrruns=input$NumRuns
    mylist=NULL
    for(i in 1:nrruns){
      mylist[[i]]<-data.frame(a=rnorm(10),b=runif(10))
      names(mylist)[i]<-paste("dataframe",i,sep="")
    }
    return(mylist)
  })

  # Grabbing only the 1st data frame:
  output$mydf <- renderTable({
    if(input$goButton==0) return(NULL)
    myout()$dataframe1
  })

  # Allowing to download only the 1st data frame:
  output$downloadData <- downloadHandler(
    filename = function() { paste(input$downloadData, " ",Sys.Date(),".csv",sep="") },
    content = function(file) {
      write.csv(myout()$dataframe1,file,row.names=F)
    }
  )

})

这篇文章也许会给你答案。

https://groups.google.com/forum/#!msg/shiny-discuss/qGN3jeCbFRY/xOW5qoVrr94J https://groups.google.com/forum/#!msg/shiny-discuss/qGN3jeCbFRY/xOW5qoVrr94J

是的,这是可能的。您需要使用 uiOutput/renderUI 来呈现按钮,每个按钮都有不同的 ID(例如 downloadData1 到 downloadDataN)。要动态定义下载处理程序,请使用如下模式:

observe({
  lapply(1:N, function(i) {
    output[[paste0("downloadData", i)]] <- downloadHandler(...)
  })
})

重要的是,如果您的输出名称是动态的,您可以分配给输出[[id]]。

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

Shiny:动态 UI - downloadHandler 周围的循环? 的相关文章

  • 数据框中按行相关

    我正在尝试计算大型数据帧的所有行之间的相关性 到目前为止已经提出了一个有效的简单 for 循环 例如 name lt c a b c d col1 lt c 43 78 43 84 37 92 31 72 col2 lt c 43 80 4
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • Dplyr 过滤多个类似条件

    我正在尝试在 dplyr 中做一个过滤器 其中的列就像某些观察结果 我可以使用 sqldf 作为 Test lt sqldf select from database Where SOURCE LIKE ALPHA OR SOURCE LI
  • 如何使用 Rcpp 将 C 结构从 C 库公开到 R

    我正在尝试将 C 结构从 C 库公开到 R 中 例如 struct A int flag 库提供 API 来构造和销毁是很常见的A A initA void freeA A a 感谢RCPP MODULE 很容易暴露它而不考虑析构函数 in
  • 如何在 R 中创建纯 ascii 表作为输出,类似于 MySQL 风格?

    我正在尝试为 R 找到一个输出的函数data frameMySQL 风格的 ascii 表中的对象如下 id var1 var2 1 asdf g 2 asdf h 3 asdf j 有这样的功能吗 至少有两个工具可以做到这一点 csvfi
  • 包什么时候需要为它自己的对象使用 :::

    考虑这个 R 包有两个函数 一个是导出函数 另一个是内部函数 hello R export hello lt function internalFunctions hello internal 你好 内部 R hello internal
  • 了解日期并使用 R 中的 ggplot2 绘制直方图

    主要问题 当尝试使用 ggplot2 制作直方图时 我无法理解为什么日期 标签和中断的处理无法像我在 R 中预期的那样工作 我在找 我的约会频率的直方图 刻度线位于匹配条下方的中心 日期标签在 Y b format 适当的限制 最小化网格空
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • pandoc 文档转换失败,错误 67

    我使用的是 R 3 3 2 和 Rstudio 版本 1 0 44 这是我的 RMarkdown 文件的格式 title Sentiment Analysis output rmdformats material highlight kat
  • 从 r 中的多个列表创建二进制(存在/不存在)数据矩阵

    我有一系列不同长度的单独变量列表 字符串 我想将它们组合成一个数据帧以形成存在 1 不存在 0 矩阵 鉴于它们的长度不同 我什至不知道如何创建初始数据框 这是我的例子 data1 lt c a b c d e f data2 lt c e
  • 使用 R 数学独立库使用 C++ 编写矩阵/向量?

    All 我一直在使用 C 中的 R 数学独立库 我非常喜欢能够生成随机数并使用我熟悉的 R 分布函数 我的问题是 是否可以使用 R 中可用的矩阵运算 乘法 转置 逆 Chol 等 一个独立的库 我在 Rmath h 中没有看到它们 如果矩阵
  • 导出绘图变量显示空白图像

    我正在使用 JRI 进行 java 和 R 集成 请找到下面的脚本 String path C Users hrpatel Desktop CSVs DataNVOCT csv rengine eval library tseries re
  • 相对于时间求平均值

    我有以下带有日期时间和相应值的数据集 时间间隔为每10分钟一次 我需要以 15 分钟的间隔生成新行 例如 15 40 的值为 599 15 50 的值为 594 因此需要在两者之间生成一个新行 即 15 45 的平均值为 599 和 594
  • 可以使用部分名称访问列表成员吗?这是一个功能吗?

    考虑这个 R 代码 gt l list key 1 gt l k 1 1 gt l ke 1 1 gt l k NULL gt names l 1 key 这是否意味着您可以使用以下方式访问列表成员 及其部分名称 当我在一次令人沮丧的错误搜
  • 在 R 中将 ascii 数字转换为字符串

    要将 R 中的字符串转换为 ascii 代码 我通常使用 gt strtoi charToRaw abcd 16L 1 97 98 99 100 是否有一个函数可以做相反的事情 即 gt myDesiredFunc c 97 98 99 1
  • 从R中的序列中随机提取多个连续项

    Frag lt seq 1 30000 K lt 9 P lt sample 1 K 1 sys sample lt Frag seq P length Frag K 现在 sys sample 包含 3333 个数字 如何在R中随机提取1
  • R 语言 NaN + NA 行为

    我有一个关于 R 中算术行为的问题 看下面这段代码 gt NaN NA 1 NaN gt gt gt NaN as integer NA gt NA 所以 我很困惑这两个添加给出了不同的结果 有谁知道这是否是真正想要的行为还是只是某种错误
  • R 连接到主机时出错

    我已经安装了 R 3 0 2 和包KEGGREST 在使用它的命令时 我收到以下错误 函数错误 类型 消息 asError TRUE 无法连接到 主持人 使用 internet2 选项后 我可以很好地从互联网安装软件包 该选项使用来自 In

随机推荐