- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Shiny 应用程序,它会在单击按钮后打印报告。通过 downloadHandler() 函数创建报告。
我希望在导出报告之前有一个必填字段;合适的 Shiny 函数是 validate()(https://shiny.rstudio.com/articles/validation.html)。
但是,根据文档,validate() 函数只能在 reactive() 或 render() 函数中使用:
To use this validation test in your app, place it at the start of any reactive or render* expression that calls input$data.
我找不到可以将此函数放在我的 downloadHandler 函数中的地方。有人知道这怎么可能吗?
这里是相关的代码部分;我希望字段“company_name”对于创建报告是强制性的。
ui <- fluidPage(
sidebarLayout(
position = "left",
sidebarPanel(
textInput(
inputId = "company_name",
label = "Company name",
value = ""
),
)
)
)
server <- function(input, output) {
output$report <- downloadHandler(
filename = "report.pdf",
content = function(file) {
# Copy the report file to a temporary directory before processing it, in
# case we don't have write permissions to the current working dir (which
# can happen when deployed).
tempReport <- file.path(tempdir(), "report.Rmd")
file.copy("report.Rmd", tempReport, overwrite = TRUE)
dir.create(file.path(tempdir(),"www"))
file.copy("www", file.path(tempdir()), recursive=TRUE)
# Set up parameters to pass to Rmd document
params <- list(company_name = input$company_name)
# Knit the document, passing in the `params` list, and eval it in a
# child of the global environment (this isolates the code in the document
# from the code in this app).
rmarkdown::render(tempReport, output_file = file,
params = params,
envir = new.env(parent = globalenv())
)
}
)
}
最佳答案
问题是 downloadButton
是一个输入小部件,而 validate
应该与输出一起使用。
如果不满足您的下载要求,我的解决方法是隐藏(或禁用)downloadButton
。这可以使用 shinyjs
来完成,它允许您通过 id 隐藏或禁用按钮。
library(shiny)
ui <- fluidPage(
shinyjs::useShinyjs(),
textInput("text", "content", "", placeholder = "please insert something"),
shinyjs::hidden(downloadButton("download"))
)
server <- function(input, output, session) {
output$download <- downloadHandler(
filename = "file.csv",
content = function(file) {
write.csv(data.frame(content = input$text), file)
}
)
observeEvent(input$text, {
if (input$text == "")
shinyjs::hide("download")
else
shinyjs::show("download")
})
}
shinyApp(ui, server)
将 hide/show/hidden
替换为 enable/disable/disabled
以始终显示按钮,但无论何时 input$text
都无法点击> 是空的。
关于 Shiny :在 downloadHandler 中使用 validate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616176/
我想在 downloadHandler 中执行一些验证,以便在条件为真时提供自定义消息,否则将下载数据。我有以下代码示例,我想在其中执行验证,但它似乎不起作用。 shinyApp( ui = ba
我有一个 Shiny 的应用程序,它需要大量时间下载 zip 文件。我正在尝试使用 futures和 promises包来管理下载,以便其他用户可以在下载过程中访问应用程序。 该应用程序如下所示: l
我有一个 Shiny 应用程序,它会在单击按钮后打印报告。通过 downloadHandler() 函数创建报告。 我希望在导出报告之前有一个必填字段;合适的 Shiny 函数是 validate()
我试图根据用户的单选输入按钮输出 .html 或 .csv 文件,但输入未在 downloadHandler 内更新。它保持选择的默认值。 output$bidownload <- downloadH
我构建了一个以 react 值存储数据框的应用程序。然后我有一个 UI 下载按钮,可以将该数据框下载到 CSV 文件中。在 CSV 文件变得非常大之前,它运行良好。我估计大约有 100MB,但很难确定
我在 Shiny 数据表的每一行中创建了下载按钮,如图所示 here .该表位于 Shiny 模块之一内。我想知道在为任何下载按钮使用 downloadHandler 时应该将哪个 id 附加到输出?
如何调用在 downloadHandler 中使用 react 函数创建的图,而无需重新定义它? 非工作示例: # Part of server.R output$tgPlot <- renderPl
我们如何将工作簿保存在某个文件夹中 并使其可供用户下载? 引用: Shiny + downloadHandler + Openxlsx does not generate a xlsx file 程序
我只是想从由模块和绘图辅助函数构建的应用程序返回用户生成的绘图(内置 ggplot)或数据表。我已经看到很多关于 downloadHandler 非常挑剔的帖子,甚至似乎存在一些 downloadHa
我不知道发生了什么 - 一切似乎都正常,但我的应用程序没有生成文件 - 尽管看起来确实如此。我在 Windows 的 RStudio 0.98.125 上运行它,并使用以下行运行它:运行应用程序()下
我开始将 CSS 与我的 R Markdowns 结合使用,以便为我的所有报告使用一致定义的外观。到目前为止,我一直在使用 css.styles 文档并在我的 markdown 中偶尔使用 HTML
我正在设置一个允许用户下载自定义数据集的 Shiny 应用程序。关注tutorial , 我设置了 downloadHandler按照 docs 中给出的示例进行操作(转载在这里,因为如果我复制并粘贴
我正在尝试构建一个 Shiny 的模块,我可以使用它从 Shiny 的应用程序下载不同的文件。但是 downloadButton 没有像我希望的那样工作。它正在响应一个不是我想要的 html 文件。这
我创建了一个 Shiny 的应用程序,它使用 session$clientData获取服务器的参数值。它很好用,但是,我也希望能够通过 url 启动下载,例如: localhost:8100/?plo
你如何获得一个 Shiny 的 downloadHandler 来更新 filename 的值每次点击下载按钮后?我尝试使用 Sys.time 构造一个唯一的文件名。唉,Sys.time() 在 Sh
我正在尝试在 Tor 上使用 scrapy。我一直在努力思考如何为使用 socksipy 连接的 scrapy 编写 DownloadHandler。 Scrapy 的 HTTP11DownloadH
我有一个 downloadButton与 downloadHandler ,当我们要下载数据时,我必须运行一个程序来确定是否有数据要下载。 我找不到取消下载处理程序的方法,下面的应用程序提示我们保存一
在 Shiny 的应用程序中,可以根据downloadHandler函数轻松下载ggplot2图表。是否可以以类似的方式下载通过 rCharts 生成的 javascript 可视化效果?如果是,最好
我正在 Unity 上创建一个注册场景。在后端,我有带有 MongoDB 的 NodeJS 服务器。注册成功,数据也保存在 Mongo 上。 这是我用于注册的NodeJS api api.post('
我用下面的最小示例模拟的场景是允许用户在长时间运行的下载过程中使用 Shiny App(单击 numericInput 控件并查看发生服务器端事件)正在发生(用 downloadHandler 中的
我是一名优秀的程序员,十分优秀!