第一个博文讲了如何构建shiny app, 如何上传数据.

第二个博文讲了如何利用shiny app, 下载数据.

这里我们利用下载报表, 使用的是rmarkdown格式. 功能很强大.

流程

1, 生成数据代码:

ID = 1:20
y = rnorm(20)
dat = data.frame(ID,y)

2, 生成一个rmarkdown文件, head, summary, plot, 以及内容.

3, 下载报表

shiny 代码

app.R

library(shiny)
library(data.table)
library(shinydashboard)

ui = dashboardPage(
dashboardHeader(title = "如何上传数据"),
dashboardSidebar(
menuItem("生成数据",tabName = "a")
),
dashboardBody(
tabItems(
tabItem(tabName = "a",
tableOutput("head"),
downloadButton("down1","下载rmarkdown的html报表"))

)
)
)

server <- function(input, output) {

d1 <- reactive({
ID = 1:20
y = rnorm(20)
dat = data.frame(ID,y)
})

output$head <- renderTable({
dat= d1()
head(dat)
})

output$down1 <- downloadHandler(
filename = function() {
paste('Data-summary', Sys.time(), sep = '.', 'html')
},
content = function(file) {
dat = d1()
src <- normalizePath('rmarkdown1.Rmd')
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'rmarkdown1.Rmd', overwrite = TRUE)
library(rmarkdown)
out <- render('rmarkdown1.Rmd', html_document())
file.rename(out, file)
})


}
shinyApp(ui = ui, server = server)

rmarkdown1.Rmd

将其放在app.R相同的文件夹中.

# First title

> 引用

## 二级标题

```{r}
1+12
```

## head
```{r}
head(dat)
```

## summary
```{r}
summary(dat)
```

## plot
```{r}
plot(dat)
```

shiny运行界面

shiny学习笔记3--利用rmarkdown生成html报告_Html

下载的html界面:

shiny学习笔记3--利用rmarkdown生成html报告_前端开发_02

可以看到, 虽然不支持中文, 但是该有的markdown还是都有的. 可以用于自动化报表的生成.

其它相关

​shiny学习笔记1—上传数据​

​shiny学习笔记2-下载数据 - CSDN博客​

​shiny学习笔记3–利用rmarkdown生成html报告 - CSDN博客​