R Shiny Активирование кнопки действия дважды с реактивными значениями - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть следующие блестящие приложения

server <- function(input, output, session) {
  rv <- reactiveValues(i = 0)

  output$myplot <- renderPlotly({
    dt = data.frame(x = 1:10, y = rep(rv$i,10))
    plot_ly(dt, x = ~x, y =~y) 
  })

  observeEvent(input$run,{
    rv$i <- 0
    observe({
      isolate({rv$i = rv$i + 1})
      if (rv$i < 10){invalidateLater(1000, session)}
    })
  })
}

ui <- fluidPage(
  actionButton("run", "START"),
  plotlyOutput("myplot")
)

shinyApp(ui = ui, server = server)

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

Мне бы хотелось, чтобы каждый раз, когда я нажимал на кнопку действия, значения rv $ i возвращались к 0, и анимация перезапускалась снова и снова.

1 Ответ

0 голосов
/ 25 февраля 2019

Не стоит помещать наблюдателя в другого наблюдателя.Просто поместите внутреннего наблюдателя наружу, и он будет работать.

library(shiny)
library(plotly)

server <- function(input, output, session) {
  rv <- reactiveValues(i = 0)

  output$myplot <- renderPlotly({
    dt = data.frame(x = 1:10, y = rep(rv$i,10))
    plot_ly(dt, x = ~x, y =~y, mode = "markers", type = 'scatter') 
  })

  observeEvent(input$run,{
    rv$i <- 0
  })

  observe({
    isolate({rv$i = rv$i + 1})
    if (rv$i < 10){invalidateLater(1000, session)}
  })

}

ui <- fluidPage(
  actionButton("run", "START"),
  plotlyOutput("myplot")
)

shinyApp(ui = ui, server = server)
...