【问题标题】:Using r shiny observeEvent with a downloadHandler将 r shiny observeEvent 与 downloadHandler 一起使用
【发布时间】:2018-11-18 20:51:48
【问题描述】:

我在使用观察者观察创建 CSV 文件以供下载的操作的过程中遇到了挑战。我认为 R-Studio 文档指出 eventExpr 可能是“花括号内的复杂表达式”。这是一个有效的 eventExpression 吗?我正在使用这个构造 5 次,当我的 shinyApp 启动时,所有五个条件都被触发。

    observeEvent(
        {
        ### Observe the download handler preparing for CSV download
        output$Wire_Centers.csv <- downloadHandler(
            filename = "Wire_Centers.csv",
            content = function(file) {
                write.table(WC_List_2(), file, row.names=FALSE, col.names = TRUE, sep=',') ### end write.table
                } # End content function
            ) # End downloadHandler
            }, { # End observered event, start log
        logUse("WC_Download")
        }) # end observeEvent output condition

有什么想法或建议吗?

【问题讨论】:

  • 你想做什么? observeEvent 通常设置为observeEvent(input$some_element, {...}),其中input$some_element 是应用程序中可以与之交互的东西,这会导致observeEvent 运行大括号内的任何代码。
  • 谢谢,布里顿。我正在尝试记录用户选择 CSV 下载的事实。函数 logUse("WC_Download") 只是在 Rds 数据文件中附加系统时间、用户 ID 和所采取的操作。我的挑战是我试图触发 downloadHandler() 动作。它似乎不是一个有效的构造。我也尝试过操作按钮,但我无法在操作子句中嵌入 downloadHandler()。

标签: r shiny observers


【解决方案1】:

我通过将日志函数调用添加为 downloadHandler 的内容函数的第一个子句来完成添加活动日志操作。调用logUse("WC_Download") 会按需要运行,并且会适当地扩充活动日志。

    output$Wire_Centers.csv <- downloadHandler(
        filename = "Wire_Centers.csv",
        content = function(file) {
            logUse("WC_Download")
            write.table(WC_List_2(), file, row.names=FALSE, col.names = TRUE, sep=',') ### end write.table
            }, # End content function
        ) # End downloadHandler

【讨论】:

    【解决方案2】:

    正如您所指出的,所有五个都在启动时被调用。该代码与输入$ 或其他更改无关,因此它只是运行并报告它已启动。考虑是否希望它在下载完成后报告,或者是否希望根据用户输入运行代码。

    【讨论】:

    • 谢谢,克里斯·巴克。我同意。当我使用 input$value 作为触发器时,我的 Observers 确实有效,但我找不到将 input$value 与下载处理程序一起使用的方法。但是我确实找到了一种方法来完成所需的日志记录操作,方法是将 log 函数调用作为 dounload 处理程序的内容函数的第一个子句。见下文:
    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2017-11-06
    • 2020-07-03
    • 2022-01-04
    • 1970-01-01
    • 2019-10-03
    • 2021-04-16
    • 2022-01-19
    相关资源
    最近更新 更多