【问题标题】:reactiveValues and Global Variables in ShinyShiny 中的反应值和全局变量
【发布时间】:2015-04-10 20:31:06
【问题描述】:

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

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

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

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

这是我的 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)
              ))
})

提前谢谢你。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

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

    只需在我的反应函数中添加对我的操作按钮 input$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)
                      ))
    })
    

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 2013-12-18
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多