r-如何在Rmarkdown文档中自定义downloadHandler-button



在闪亮的downloadHandleractionButton/downloadButton在ui部分组合。因此,您可以通过输入

轻松更改按钮标签:
downloadButton("btn_export", "Export")

下面是一个小小的shinyapp,只有一个按钮来导出一些示例数据:

library(shiny)
ui <- fluidPage(
downloadButton("btn_export", "Export")
)
server <- function(input, output) {
data <- mtcars

output$btn_export <- downloadHandler(
filename = function() {
paste0("shiny_", Sys.Date(), ".csv")
},
content = function(file) {
write.csv(data, file)
}
)
}
shinyApp(ui, server)

在markdown中,downloadHandler直接添加到代码块中:

```{r, echo=FALSE}
downloadHandler(
filename = function() {
paste0("rmd_", Sys.Date(), ".csv")
},
content = function(file) {
write.csv(data, file)
}
)
``` 

如何更改下载按钮的标签?

完整示例:

---
title: "test"
runtime: shiny
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r data_prep, include=FALSE}
data <- mtcars
```
```{r download, echo=FALSE}
downloadHandler(
filename = function() {
paste0("rmd_", Sys.Date(), ".csv")
},
content = function(file) {
write.csv(data, file)
}
)
```

编辑:

上面可重复的最小示例可能太小。我真实的Rmarkdown文档中的downloadHandler正在呈现一个静态rmd报告供下载:

downloadHandler(filename = function() {
return("CaRe.html")
}, content = function(file) {
rmarkdown::render(input = "CaRe_static.Rmd", 
output_file = file,
params = list(in_rohdaten = input$in_rohdaten$datapath,
in_kunde = input$in_kunde,
in_kampagne = input$in_kampagne,
in_auftrag = input$in_auftrag,
in_datum = input$in_datum
))
}, contentType = "text/html"
)

只是为了与解决方案相关。

啊,如果你仔细阅读说明书,它是如此简单。对不起,浪费了你的时间。

可以使用downloadHandleroutputArgs参数来改变下载按钮的标签:

---
title: "test"
runtime: shiny
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r data_prep, include=FALSE}
data <- mtcars
```
```{r download, echo=FALSE}
downloadHandler(
filename = function() {
paste0("rmd_", Sys.Date(), ".csv")
},
content = function(file) {
write.csv(data, file)
},
outputArgs = list(label = "Export")  # <--- That's it!
)
```

不知道如何使用downloadHandler(),但你可以尝试下载这个包。

---
title: "test"
runtime: shiny
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r, include=FALSE}
library(downloadthis)
data <- mtcars
```
```{r, echo=FALSE}
download_this(mtcars,
output_name = "mtcars data set",
output_extension = ".csv",
button_label = "Download mtcars",
button_type = "warning",
has_icon = TRUE,
icon = "fa fa-save"
)

最新更新