输入变量没有在Shiny的downloadHandler中更新

时间:2017-01-05 22:59:43

标签: r input scope shiny

我试图输出.html或.csv文件,具体取决于用户的无线电输入按钮,但输入未在downloadHandler内部更新。它保持在所选的默认值。

output$bidownload <- downloadHandler(


  if(input$conreport == 'report') {
    filename = paste0(input$conreport, '.html')
  } else {
    filename = paste0(input$conreport, '.csv')
  },
  content = function(file) {
    if(as.character(input$reporttype) == 'report') {
      tempReport <- file.path(tempdir(), paste0(input$conreport, '.Rmd'))
      file.copy(paste0(input$conreport, '.Rmd'), tempReport, overwrite = TRUE)

      params <- list(range = as.character(input$dateparam))

      rmarkdown::render(tempReport, output_file = file,
                        params = params,
                        envir = new.env(parent = globalenv())
      )
    } else {
      write.csv(weightbreak_raw(), file)
    }
  }
)

由于选定的单选按钮处于“报告”状态,即使用户更改单选按钮,我也会始终生成.html文档。如何在下载处理程序中获取更新的输入?我查了here但仍然无法弄清楚如何解决这个问题

1 个答案:

答案 0 :(得分:3)

downloadHandler filename参数是字符串或函数。如果使用字符串,则在渲染时对其进行评估,但如果使用函数,则会在下载时对其进行评估(因此在用户选择所需的下载类型后):

output$bidownload <- downloadHandler(
  function(){
    if(input$conreport == 'report') 
      paste0(input$conreport, '.html')
    else
      paste0(input$conreport, '.csv')
  },
...