我试图输出.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但仍然无法弄清楚如何解决这个问题
答案 0 :(得分:3)
downloadHandler
filename参数是字符串或函数。如果使用字符串,则在渲染时对其进行评估,但如果使用函数,则会在下载时对其进行评估(因此在用户选择所需的下载类型后):
output$bidownload <- downloadHandler(
function(){
if(input$conreport == 'report')
paste0(input$conreport, '.html')
else
paste0(input$conreport, '.csv')
},
...