似乎还有一些人对同一个问题感到困惑,但在阅读并尝试了我在这里找到的解决方案之后,我仍然感到难过。救命啊!
我有一个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)
))
})
提前谢谢你。
答案 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)
))
})