Если я добавлю противодействие к реактивному выражению get_data (), при первом извлечении данных график не отобразится. Однако изменение данных (путем выбора нового значения миль на галлон) вызывает рендеринг графика. Почему это? Есть ли обходной путь? Вот простой минимальный пример, демонстрирующий проблему. Попробуйте удалить %>% debounce(500)
, чтобы убедиться, что без него он работает должным образом:
if (interactive()) {
options(device.ask.default = FALSE)
library(shiny)
library(magrittr)
ui <- fluidPage(
selectInput("select", label = "select mpg", choices = c(mtcars$mpg, ""), selected = ""),
plotOutput("plot")
)
server <- function(input, output, session) {
get_data <- reactive({
req(input$select)
mtcars[mtcars$mpg == input$select,]
}) %>% debounce(500)
get_plot <- reactive({
data <- get_data()
print(data)
plot(get_data())
})
output$plot <- renderPlot({
get_plot()
})
}
shinyApp(ui, server)
}