闪亮的反应值和全局变量

时间:2015-04-10 20:31:06

标签: r shiny

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

我有一个Shiny App,它取两个日期之间的价格差异,并返回每个日期的每种产品类型的4个表的列表,以及两个日期的价格Deltas相同的4个表。 (DATE1,DATE2,DELTA)

在Calc之后的输出屏幕上,表格保持为空,直到用户点击提示表格刷新的inputSelectors。

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

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

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)
              ))
})

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

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

只需添加对我的操作按钮的调用,输入$ GET_Dates,在我的被动功能中触发了表的重新计算。

我还简化了我的反应值功能。

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)
                  ))
})