我的应用程序中有一个小而令人沮丧的问题。当user $ stationtype或user $ stationvar更改时,此对象output $ timeheader <-renderText()不响应,而仅在stationname()更改时才响应。
我尝试进行reprex,但无法重现该错误。它按本示例的预期工作。在我的应用中,对user $ stationtype或user $ stationvar的更改不会触发输出$ timeheader <-renderText()。
library(shiny)
ui <- tagList(
navbarPage(
title = "navbarPage",
tabPanel(
title = "tabPanel",
tags$div(
absolutePanel(
tabsetPanel(
tabPanel(
title = "title",
tags$div(
actionButton("changesel", "Choose a different variable"),
textInput("map_marker_click", "Enter station name"),
h4(strong(textOutput("timeheader")))
)
)
)
)
)
)
)
)
server <- function(input, output, session){
# collect inputs needed by model
user <- reactiveValues(
stationvar = NA,
stationtype = NA
)
# observe changes in ui and pass to user$
observe({
input$changesel # observe button click
ot <- runif(1)
isolate({
obsnut <- ifelse(ot > 0.6, "DIN", "NONE") # obs to use
obsgroup <- ifelse(ot > 0.3, "Streams", "none")
if (!setequal(obsnut, user$stationvar)){
cat("user$stationvar <-", obsnut, "\n")
user$stationvar <- obsnut
}
if (!setequal(obsgroup, user$stationtype)){
cat("user$stationtype <-", obsgroup, "\n")
user$stationtype <- obsgroup
}
}) # end isolate
})
# timeheader ####
output$timeheader <- renderText({
# req(user$stationtype, user$stationvar)
# FIXME why doesn't this stupid text show!!! ####
cat("Time series header:", user$stationtype, stationname(), user$stationvar, "\n")
if (isTRUE(stationname() > "")){
"Time series plot:"
} else if (isTRUE(user$stationvar != "NONE")){
"Enter station name to view data:"
} else {
""
}
})
## click on marker to get stationname ####
stationname <- reactive({
req(isTRUE(user$stationvar != "NONE"))
cat("Marker click\n")
input$map_marker_click
})
}
shinyApp(ui, server)
答案 0 :(得分:1)
我的猜测是它与AVG(value) OVER(PARTITION BY test ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
反应式由于stationame
而为null有关。试试:
req