【问题标题】:Error with the download button in SHINYSHINY 中的下载按钮出错
【发布时间】:2017-12-31 03:17:16
【问题描述】:

当我使用下载按钮检索报告时,我的下载按钮显示错误。按钮的输出 id 是 downloadData。似乎是什么错误?

output$downloadData <- downloadHandler(
filename = function() {
  paste('Final Report', '.csv', sep='')
  },
content = function(file){
       write.csv(csv_write,row.names=FALSE, na="")
})

【问题讨论】:

    标签: r csv shiny export-to-csv


    【解决方案1】:

    假设 csv_write 是您要下载的数据集,以下是应该为您工作的代码:

    output$downloadData <- downloadHandler(
            "Final_Report.csv", content = function(file) {
             write.csv(csv_write, file, row.names=FALSE, na="")
            }
          )
    

    首先你会得到什么样的错误?

    【讨论】:

    • 我正在下载的文件是以 downloadData 的名义出现的,而不是最终报告。该文件也不是 csv 格式
    【解决方案2】:

    the documentation:

    content = function(file) {
      write.csv(data, file)
    }
    

    因此您还必须将文件参数传递给 write.csv 函数。假设你要写的数据叫csv_write,你应该这样做:

    write.csv(csv_write, file, row.names=FALSE, na="")
    

    工作示例

    library(shiny)
    
    csv_write = data.frame(a=c(1,2,3),b=c(1,2,3))
    
    server <- shinyServer(function(input, output, session) {
    
      output$downloadData <- downloadHandler(
        filename = function() {
          paste('Final Report', '.csv', sep='')
        },
        content = function(file){
          write.csv(csv_write,file,row.names=FALSE, na="")
        })
    
    
    })
    
    ui <-shinyUI(fluidPage(
    
          downloadButton('downloadData', 'Download data')
    
    ))
    
    shinyApp(ui,server)
    

    注意 csv_write 是一个 reactive 或 reactiveValue,你应该调用 csv_write() 而不是 csv_write。

    【讨论】:

    • 我正在下载的文件是以 downloadData 的名义出现的,而不是最终报告。该文件也不是 csv 格式
    • 我不确定你的意思是什么?
    • 上面代码的错误是我正在下载的文件不是最终报告的名称,扩展名不是csv。您认为为什么会存在这个问题?
    • 很难理解你的意思。名称 Final report 是您为下载的数据命名/设置的名称,.csv 表示您要在末尾获取 csv 格式的数据。
    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多