【问题标题】:R Shiny Activing an Action Button twice with reactive valuesR Shiny 使用反应值激活操作按钮两次
【发布时间】:2019-07-18 10:51:58
【问题描述】:

我有以下闪亮的应用程序

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,并且动画会重新开始。

【问题讨论】:

    标签: r shiny reactive action-button


    【解决方案1】:

    把一个观察者放在另一个观察者里面并不是一个好主意。只需将内部观察者放在外面,它就会起作用。

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多