【问题标题】:R Shiny downloadHandler does not work inside flexdashboardR Shiny downloadHandler 在 flexdashboard 中不起作用
【发布时间】:2020-04-26 13:58:43
【问题描述】:

我正在使用 R Shiny Flexdashboard,包括一个下载按钮。要在屏幕上分配项目,我想使用 splitLayout。但问题是,如果我在 SplitLayout 中使用 downloadButton,则 downloadHandler 会引发非常奇怪的行为……在 RStudio 中,它会尝试保存一个(显然)空的 .Rmd 文件。在浏览器中,它会尝试保存一个(显然)空的 .htm 文件...

带有最小示例的代码如下:

splitLayout(cellWidths = c("30%", "70%"),
            wellPanel(  
              downloadButton("downloadData")
            ),
            dataTableOutput("OrigData")
)
output$downloadData<-downloadHandler(
 filename =  "OriginalData.csv" ,
    content = function(file) {

      write.csv(mtcars, file=file)
    },
  contentType="text/csv"
)
output$OrigData<-DT::renderDataTable(mtcars)

我想知道发生了什么...

link 看来,downloadHandler 仅在将其放在下载按钮代码之后才有效(也仅在最后一个包含在 wellPanel 中时)...但是如果仅将这部分隔离,该代码就可以正常工作。

应用程序的其他部分仍然只是文本/Markdown,以及列和选项卡标题,因为它处于草稿状态......

当 downloadHandler 尝试保存 .Rmd 和/或 html 文件时会发生什么?

【问题讨论】:

  • 一般 downloadHandler() 函数很烂。写得不好。
  • @Brad 随时向 RStudio 发送您的简历以及如何改进它。

标签: r shiny flexdashboard


【解决方案1】:

这对我有用:

---
title: "app"
output:
    flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
runtime: shiny
---

```{r}
library(flexdashboard)
library(shiny)
library(DT)

splitLayout(cellWidths = c("30%", "70%"),
            wellPanel(  
              downloadButton("downloadData")
            ),
            dataTableOutput("OrigData")
)
output$downloadData<-downloadHandler(
 filename =  "OriginalData.csv" ,
    content = function(file) {

      write.csv(mtcars, file=file)
    },
  contentType="text/csv"
)

output$OrigData <- renderDataTable(mtcars)
```

【讨论】:

    【解决方案2】:

    我包括一个答案,因为我试图回答 cmets 并且它消失了......我相信我找到了答案,但这将是一个有趣的 flexdashboard+downloadHandler 行为......

    • 正如@Phil 所说,我在这里发布的隔离代码确实有效,我现在尝试了(抱歉之前没有这样做)...
    • 我回到我的原始代码并隔离了相应的代码(与我的数据)。它也可以工作(它可以正确下载 .csv)
    • 理论上剩余的代码与问题无关...仅包括剩余的代码使下载处理程序正常工作...

    问题似乎是标题(列、选项卡标题 - .data-navmenu、.storyboard)......这没什么意义,它们只是标题......但我修改了原始标题(有一些类似的标题)它也解决了这个问题……应用程序停止尝试保存 .Rmd 或 .htm,并开始启用下载 .csv……

    我相信当 flexdashboard 中有类似的列/选项卡标题时,downloadHandler() 不起作用......这有意义吗?回答这个问题听起来有点奇怪,但确实有效......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2020-04-03
      • 2018-08-02
      • 2019-03-07
      • 2020-11-04
      • 2019-07-24
      • 1970-01-01
      相关资源
      最近更新 更多