R Shiny - 为downloadHandler添加for循环

时间:2015-04-06 15:36:21

标签: r shiny shiny-server

我正在尝试向for函数添加downloadHandler循环,以便下载n个文件,其中n是用户输入。在下面的示例中,为了简单起见,我没有使用n,我只是想让循环工作,然后我将修改代码并添加反应性等。< / p>

以下是单次下载的标准代码:

output$downloadData <- downloadHandler(
   filename = function() {paste('test', '.csv', sep='') },
   content = function(file) {write.csv(df, file)}
)

我尝试在此处添加for循环但没有成功,此处:

output$downloadData <- downloadHandler(
   for (i in 1:5) {
      filename = function() {paste('test', i, '.csv', sep='') }
      content = function(file) {write.csv(df, file)}
   }
)

在这里:

 output$downloadData <- for (i in 1:5) {
      downloadHandler(
             filename = function() {paste('test', i, '.csv', sep='')},
             content = function(file) {write.csv(df, file)}
      )
 }

这是一款简化的应用,可以下载1个文件test.csv。我想通过单击按钮下载多个文件。所以,让我们说3个文件,test1.csvtest2.csvtest3.csv

library(shiny)

#### SERVER ####
server <- shinyServer(function(input, output) {

  df = as.data.frame(1:10)
  output$table = renderDataTable({df})

  #create download output
  output$downloadData <- downloadHandler(
    filename = function() {paste('test', '.csv', sep='')},
    content = function(file) {write.csv(df, file)}
  )
})

#### UI ####
ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      h3(textOutput("input")),
      numericInput("n", h5("n"), value = ''),
      downloadButton('downloadData', 'Download')  
    ),
    mainPanel(
      dataTableOutput("table")
    )
  )
))

shinyApp(ui<-ui, server<-server) #launch app

对此的任何帮助将不胜感激。感谢。

0 个答案:

没有答案