Как показать индикатор выполнения для вычисления в eventReactive ()? - PullRequest
0 голосов
/ 22 сентября 2019

Я хочу показать индикатор выполнения, если что-то в eventReactive() оценено.Тем не менее, withProgress() не работает должным образом, если ничего не добавлено непосредственно к выводу.(См. Первую часть ниже, которая вызывается input$go1.)

На панели мониторинга с несколькими панелями она отображается, если перейти на другую подстраницу.Тем не менее, я хочу, чтобы он появился сразу после нажатия кнопки.

Кто-нибудь может помочь решить эту проблему в приведенном ниже примере?

library(shiny)

ui <- fluidPage(
            actionButton("go1", "Go! Number 1"),
            actionButton("go2", "Go! Number 2"),
            plotOutput("plot")
            )



server <- function(input, output) {

    eventReactive(input$go1,{
        withProgress({
            for (i in 1:15) {
              incProgress(1/15)
              Sys.sleep(0.25)
              }
            }, message = "Doesn't show up!")
    })

output$plot <- renderPlot({
        input$go2
        withProgress({
            for (i in 1:15) {
                incProgress(1/15)
                Sys.sleep(0.1)
            }
        }, message = "Shows up!")
        plot(cars)
    })

}


shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 23 сентября 2019

eventReactive не выполняется, когда вызывается выражение события, оно только помечается как недействительное.Вам нужно будет запросить их реактивное значение для их выполнения - пожалуйста, проверьте следующее:

library(shiny)

ui <- fluidPage(
  actionButton("go1", "Go! Number 1"),
  actionButton("go2", "Go! Number 2"),
  plotOutput("plot")
)

server <- function(input, output) {

  myData <- eventReactive(input$go1, {
    withProgress({
      for (i in 1:15) {
        incProgress(1/15)
        Sys.sleep(0.25)
      }
    }, message = "Doesn't show up!")
    cars
  })

  output$plot <- renderPlot({
    input$go2
    req(myData())
    withProgress({
      for (i in 1:15) {
        incProgress(1/15)
        Sys.sleep(0.1)
      }
    }, message = "Shows up!")
    plot(myData())
  })

}

shinyApp(ui = ui, server = server)

Для вашего примера сценария observeEvent - лучший выбор.Пожалуйста, смотрите это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...