Shiny模块输出传递至Rmarkdown文档显示空白问题排查
问题解决:Shiny参数无法传递到Rmarkdown报告
问题出在downloadHandler中参数传递的方式:你传递的是reactive对象本身,而非它的当前值,导致Rmarkdown无法获取实际的bins数值。
错误原因
slider_btn_vals$bins已经是一个reactive响应式对象,不需要再用reactive()包裹它;而且要获取响应式对象的当前值,必须通过括号调用(即slider_btn_vals$bins())。直接传递reactive对象的话,Rmarkdown拿到的是一个函数,而非具体数值。
修正后的代码
修改Shiny app中server函数里的downloadHandler部分:
output$report <- downloadHandler( filename = "report.html", content = function(file) { tempReport <- file.path(tempdir(), "report.Rmd") file.copy("report.Rmd", tempReport, overwrite = TRUE) # 修正参数传递:直接调用reactive对象获取当前值 params <- list(n = slider_btn_vals$bins()) rmarkdown::render(tempReport, output_file = file, params = params, envir = new.env(parent = globalenv()) ) } )
验证效果
修改后,点击"Generate report"下载的HTML报告中,This is a test: r params$n``会显示当前滑块选择的bins数值(比如默认的30,或你调整后的数值)。
内容的提问来源于stack exchange,提问作者southwind
相关产品推荐
相关产品推荐

