Shiny 中的reactiveValues 和全局变量

标签 r shiny

似乎还有其他一些人对同样的问题感到困惑,但在阅读并尝试我在这里找到的解决方案后,我仍然感到困惑。救命!

我有一个 Shiny 的应用程序,它获取两个日期之间的价格差异,并返回一个包含 4 个表的列表,每个表对应每个日期的每种产品类型,以及两个日期的价格增量的相同 4 个表。 (日期 1、日期 2、德尔塔)

在 Calc 之后的输出屏幕上,表保持为空,直到用户单击提示表刷新的输入选择器。

我仍在努力理解如何让表格在计算结束时自动刷新。

以下是我的 Server.R 文件中有关数据表之一的输出的逻辑:

dataset_HL <- reactive({
    switch(input$dataset_HL, 
           "Deltas" = DELTA$HL,
           "Date 1" = DATE1$HL, 
           "Date 2" = DATE2$HL)
})

termGroup_HL <- reactive({
    switch(input$termGroup_HL,
           "ALL" = rowIndex$ALL, 
           "BOM" = rowIndex$BOM,
           "QTR" = rowIndex$QTR,
           "CAL" = rowIndex$CAL)
})

values_HL <- reactive({
    data <- dataset_HL()
    colnames(data) <- locations$HL
    data <- cbind(Terms = rownames(data), data)
    rows <- termGroup_HL()
    return(data[rows, ])
    })

output$table_HL <- renderDataTable({
    datatable(values_HL(),
              rownames = FALSE,
              options = list(
                  pageLength = 25, 
                  lengthMenu = c(10, 25, 50, 100)
              ))
})

提前谢谢您。

最佳答案

我终于找到了答案,当然,Joe Cheng已经在这里回答了,Shiny Reactivity

只需在我的 react 函数内添加对操作按钮 input$GET_Dates 的调用即可触发表格的重新计算。

我还简化了我的 react 值函数。

values_HL <- reactive({
    input$GET_Dates
    dataset     <- switch(input$dataset_HL, 
                    "Deltas" = DELTA$HL,
                    "Date 1" = DATE1$HL, 
                    "Date 2" = DATE2$HL)

    termGroup   <- switch(input$termGroup_HL,
                    "ALL" = rowIndex$ALL, 
                    "BOM" = rowIndex$BOM,
                    "QTR" = rowIndex$QTR,
                    "CAL" = rowIndex$CAL)
    data <- dataset[termGroup, ]         
    data <- cbind(Terms = rownames(data), data)
    data 
})



output$table_HL <- renderDataTable({
    datatable(values_HL(), 
              rownames = FALSE,
              options = list(
                  pageLength = 25, 
                  lengthMenu = c(10, 25, 50, 100)
                  ))
})

关于Shiny 中的reactiveValues 和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29570168/

相关文章:

r - 如何保存在 R Leaflet Shiny map 中绘制的 addDrawToolbar 形状,以便我可以重新导入它们?

r - 在 print.tbl 中使用个人打印方法

r - 检查向量的元素是否在列表的相应元素中

r - 是否写入 "ui.R + server.R"或 "app.R"

html - Shiny 的布局 - 如何添加页脚免责声明?

r - 如何正确地连接R中的比迪字符串?

r - 无法在 R Shiny flexdashboard 中并排绘制条形图

r - 使用 R 折叠不同列中具有不同值的重复行

r - dplyr::left_join 为新连接的列生成 NA 值

r - 如何使用 dplyr 获得两列的平均值?