我创建了一个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")
))))
答案 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])})})