Shiny:下载zip存档

时间:2017-11-02 10:26:25

标签: r shiny zip

我正在创建一个Shiny应用程序,我想将我的结果下载到zip存档中。之前,它对我有用,因为我使用的是Rx34位。不幸的是,由于我使用了Rx64bits,因此无法正常工作。 我发现了一些不适合我的例子:

Get_Y

错误如下:

library(shiny)

ui <- shinyUI(fluidPage(

  titlePanel("Old Faithful Geyser Data"),

  sidebarLayout(
    sidebarPanel(
      downloadButton("downloadData", "Download")
    ),

    mainPanel(
      DT::dataTableOutput('myTable1')
    )
  )
))

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

  output$myTable1 <- DT::renderDataTable(iris)

  output$downloadData <- downloadHandler(
    filename = function() {
      paste0("output", ".zip")
    },
    content = function(file) {
      k <- input$myTable1_rows_selected
      fs <- c()
      for (i in k) {
        path <- paste0(i, ".docx")
        rmarkdown::render("test.rmd", rmarkdown::word_document(), output_file = path)
        fs <- c(fs, path)
      }
      zip(file, fs)
    },
    contentType = "application/zip"
  )

})

shinyApp(ui = ui, server = server)

我在Windows 7中使用R64bits。谢谢

1 个答案:

答案 0 :(得分:0)

如果选择了0行,则对zip的调用将失败,因为files参数fs为NULL。

显然,这取决于你想要做什么,但快速而肮脏的黑客是明确地创建一个空文件并将其放在输出zip中。

if (is.null(k)) {
    file.create('empty')
    zip(file, 'empty')
} else {
    zip(file, fs)
}