Наблюдать за событием и сделать недействительными последние в R Shiny - PullRequest
0 голосов
/ 14 апреля 2020

В этом скрипте вызов invalidateLater () обновляет происходящее каждые 1,5 секунды. У меня также есть кнопка настройки для вызова функции (add.to.queue) с использованием наблюдающего события; однако, это выполняется каждый раз, когда invalidateLater принят. Я хочу, чтобы функция add.to.queue () вызывалась только при нажатии кнопки, а не каждый раз, когда происходит invalidateLater. Что здесь происходит / как я могу это исправить?

add.to.queue <- function(object, ev, timestep) {
  print("add.to.queue called")
  timestep <- timestep+1+length(queue)

  ev <- call("object", list(input = list(ev, timestep+1),
                          showPlot=TRUE, 
                          timeStep=timestep+1
                          ))

  queue$timestep <<- ev

}
ui <- fluidPage(
      # Application title
      titlePanel("Neuron"),

      # Sidebar with a slider input for number of bins
      sidebarLayout(
        sidebarPanel(
          sliderInput("slider", "Slider", 2, 1000, dt),
          actionButton("sendSpike", "Send Spike")
        ),
         # Show a plot of the generated distribution
        mainPanel(
          # textOutput("count"),
          plotOutput("neuron1")
        )
      )
    )

    server <- function(input, output, session) {

      observeEvent("sendSpike", add.to.queue(neuron.1, "37", timeStep$current))

      timeStep <- reactiveValues(current = 2)


      # instantiate neurons
      neuron.1 <- RAF

       output$neuron1 <- renderPlot({
        invalidateLater(millis = 1500, session)
        timeStep$current <- isolate(timeStep$current) + 1
         print(queue)
         queueLatest(timeStep$current)
         neuron.1(timeStep = timeStep$current)
       })



    }


    shinyApp(ui = ui, server = server)

Решение: Мне нужно было добавить ignoreInit = TRUE, чтобы наблюдать за событием, а также изменить Наблюдение за событием на вход $ sendSpike:

observeEvent(input$sendSpike, add.to.queue(neuron.1, "37", timeStep$current, ignoreInit = TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...