R Shiny:延迟渲染输出(最小/最大日期范围输入)

时间:2017-03-09 11:03:56

标签: r shiny

我创建了一个Shiny App,用于过滤日期和类型的值。

问题是当我希望我的daterangeinput根据类型自动更新min / max和start / end时,输出分两步进行。

我试图重新创建一个简单的例子(见下文),但问题很难发现,因为这个过程非常快,数据太少。

在我的大型应用程序中,问题非常明显,因为数字更新为TWICE:首先更改类型,然后更新最小/最大日期。

TLDR:在daterangeInput [1]和[2]更新之前,我如何让textOutput等待输出任何内容?

非常感谢一些帮助,谢谢!

SERVER.R

MMddyyyy

UI.R

library(shiny)

example <- read.xlsx("example.xlsx", sheetIndex = 1, encoding = 'UTF-8')

shinyServer(function(input, output) {

# datefilter with min max    
output$dates <- renderUI({
dates <- filterExample2()$date
minval <- min(dates)
maxval <- max(dates)
dateRangeInput(inputId='dates', label = "dato:",
               start = minval, end = maxval, 
               min = minval, max = maxval,
               separator = " - ")})   
##  date ##
filterExample <- reactive({
filter(example, date >= input$dates[1] & date <= input$dates[2])})

##  type ##
filterExample2 <- reactive({
filter(example, type == input$type)})

##  date & type #
filterExample3 <- reactive({
filter(example, type == input$type & date >= input$dates[1] & date <= input$dates[2])})           

output$value <- renderText({
paste("total value:", as.numeric(sum(filterExample3()$value)))
})})

DATA / EXAMPLE.XLSX

shinyUI(fluidPage(

titlePanel("test!"),
sidebarLayout(
sidebarPanel(
  selectInput("type", "choose type",

              choices = sort(example$type), 
              selected = 1,
              selectize = TRUE,
              multiple = F)),
mainPanel(
  textOutput("distPlot"),
  uiOutput("dates"),
  textOutput("value")
))))

1 个答案:

答案 0 :(得分:0)

actionButton怎么样?

用户选择所有内容后,计算(过滤)会触发,然后按actionButton

<强> ui.R

actionButton("button1", "Go")

<强> server.R

    filterExample3 <- reactive({if( input$button1 == 0){return()}
isolate({filter(example, type == input$type & date >= input$dates[1] & date <= input$dates[2])})})