R Shiny downloadHandler 在 flexdashboard 中不起作用

R Shiny downloadHandler does not work inside flexdashboard

我在 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 中)...但是如果仅此隔离,代码工作正常部分。

应用程序的其他部分仍然只是text/Markdown,以及列和标签headers,因为它处于草稿状态...

当 downloadHandler 尝试保存 .Rmd and/or html 文件时发生了什么?

这对我有用:

---
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)
```

我包含了一个答案,因为我试图回答评论,但它消失了……我相信我找到了答案,但这将是一个有趣的 flexdashboard+downloadHandler 行为……

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

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

我相信当 flexdashboard 中有类似的 column/tab 标题时 downloadHandler() 不起作用...这有意义吗?这个问题的答案听起来有点奇怪但是有效...