2018-10-26
阅读量:
1943
在R里构建的shiny应用程序如何下载数据

Shiny也提供了下载计算结果文件的特性,这能可以很容易地构建报告系统。
要运行下面的例子,键入:
> library(shiny)> runExample("10_download")
要定义文件下载的功能,在服务端用downloadHandler使用函数,在UI端使用downloadButton或 downloadLink。
shinyUI(pageWithSidebar(headerPanel('Download Example'),sidebarPanel(selectInput("dataset","Choose a dataset:",choices=c("rock","pressure","cars")),downloadButton('downloadData','Download')),mainPanel(tableOutput('table'))))
shinyServer(function(input,output){datasetInput<-reactive({switch(input$dataset,"rock"=rock,"pressure"=pressure,"cars"=cars)})output$table<-renderTable({datasetInput()})output$downloadData<-downloadHandler(filename=function(){paste(input$dataset,'.csv',sep='')},content=function(file){write.csv(datasetInput(),file)})})
正如你看的那样,downloadHandler接收参数filename,这个参数告诉浏览器保存时默认的文件名,它可以是简单的字符串,也可以是返回字符串的函数(如上例)。
content参数必须是包含一个参数的函数,这个参数是临时文件的文件名。content函数的作用是往要下载的临时文件里写内容。
filename和 content参数可以使用反应值或表达式(尽管在上面例子中的filename,参数是实际的函数,filename = paste(input$dataset, '.csv')不会按你想的那样运行,因为当下载处理器定义时,它只计算一次)。
一般来说,只有两个参数你需要。有个可选参数contentType,如果它是NA或 NULL,shiny会基于文件名猜测一个合适的值。如果你想改变这一行为,可以提供一个类型的字符串(比如,"text/plain")
0.0000
0
1
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
0条评论

