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() 不起作用...这有意义吗?这个问题的答案听起来有点奇怪但是有效...
我在 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() 不起作用...这有意义吗?这个问题的答案听起来有点奇怪但是有效...