У меня есть один числовой вход. Значение numericInput выводится на график и переводится в реактивное значение. Как обновить график перед обновлением другого реактивного значения? График всегда становится серым, пока не будет обновлено реактивное значение.
Edit1: приведенный ниже код является минимальным поддельным примером моей проблемы. У меня иногда есть блестящее приложение, в котором изменение в одном входе одновременно запускает график и обновляет некоторое реактивное значение. В приведенном ниже примере, input$i
наносится на график, и значение переводится в реактив value()
. Sys.sleep(3)
демонстрирует, что если реактивный расчет занимает много времени, приложение сначала делает это, а затем обновляет график. Иногда было бы неплохо сначала обновить сюжет, а затем сделать длинный расчет. У меня вопрос такой; могу ли я заставить renderPlot
произойти сначала, а потом еще один реактив?
Пример ниже:
library(shiny)
library(ggplot2)
ui <- fluidPage(
numericInput("i",
"i",
value = 0),
plotOutput("plot")
)
server <- function(input, output, session) {
output$plot <- renderPlot({
ggplot(data = NULL, aes(x = input$i, y = input$i)) + geom_point()
})
value <- reactive({
Sys.sleep(3)
input$i
})
observe(print(value()))
}
shinyApp(ui, server)