Shiny R,使用 downloadButton 函数

Shiny R, Using the downloadButton function

我正在尝试弄清楚如何使用 downloadButton 将多个内容下载到一个 pdf 文件中。我在 ui 中创建了下载按钮:

downloadButton('downloadData', 'Download Data'))

我正在尝试将多个图表和表格合并到一个 pdf 文件中。我在服务器文件中有以下

 output$downloadData <- downloadHandler(
    filename = function() {
      paste('data-', Sys.Date(), '.pdf', sep=&rdquo;)
    }

但我认为这将保存多个 csv 文件。我如何从

等渲染中下载多个图表和表格
output$table<-renderTable({
        P.Value<- c(lev.p,bart.p,turn.p,shap.p,jar.p,linm.p) 
        Test.Statistic<-c(lev.s,bart.s,turn.s,shap.s,jar.s,linm.s) 
        df<-data.frame(P.Value,Test.Statistic)
        rownames(df, do.NULL = TRUE, prefix = "row")
        rownames(df) <- c("Levene Test","Bartlett Test","Turning Point Test","Shapiro-Wilk Test","Jarque Bera Test","Linear Model Constant Drift Test")

        df
  })

,

  output$qq.line<-renderPlot({

    index<-1:length(lg.ret.vec())
    model<-lm((lg.ret.vec())~ index) 
    plot(model,which=2,main="QQ plot of the residuals",xlab="Theoretical Quantiles")             
    qqline(rstandard(model),col="black")
  })

,

  output$histogram<-renderPlot({

      hist(lg.ret(),main="Histogram of log returns",xlab="Log returns")
  })

仅举几例。

您需要为 downloadHandler 定义要下载的内容。见 http://www.inside-r.org/packages/cran/shiny/docs/downloadHandler

您尝试将绘图和表格下载到单个 csv 文件是什么意思?你的意思是合并数据?您可能对什么是 csv 文件感到困惑。

你可以利用 rmarkdown 来制作一份包含你所有情节的报告,here is one example

在您的情况下,您可以使用以下 downloadHandler(代码改编自 link):

output$downloadData <- downloadHandler(
    filename = function() {
      paste('report', sep = '.','html')
    },

    content = function(file) {
      src <- normalizePath('report.Rmd')

      owd <- setwd(tempdir())
      on.exit(setwd(owd))
      file.copy(src, 'report.Rmd')

      library(rmarkdown)
      out <- render('report.Rmd',html_document())
      file.rename(out, file)
    }
  )

并在与 server.R 和 ui.R 相同的文件夹中创建一个名为 report.Rmd 的文件:

report.Rmd

---
title: "Your report"
output: html_document
---

This is your plot

```{r echo=FALSE}
    index<-1:length(lg.ret.vec())
    model<-lm((lg.ret.vec())~ index) 
    plot(model,which=2,main="QQ plot of the residuals",xlab="Theoretical Quantiles")             
    qqline(rstandard(model),col="black")

```

This is your histogram

```{r echo=FALSE}
hist(lg.ret(),main="Histogram of log returns",xlab="Log returns")
```