在ReactiveValues中插入响应式值

3
我有一个Shiny应用程序,内容如下:
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') %>%
      layout(yaxis = list(range = c(0,10)))
  })

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

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

ui <- fluidPage(
  sliderInput('valstart','Start Value', min = 1, max =3, value= 3),
  actionButton("run", "START"),
  plotlyOutput("myplot")
)

shinyApp(ui = ui, server = server)

然而,我希望在启动应用程序时,rv的初始值取决于一个参数(这里是我的滑块输入)。 我想要这样的东西:

rv <- reactiveValues(i = input$valstart)

但这会给我以下错误信息:

Error in .getReactiveEnvironment()$currentContext() : 在没有活动的响应式上下文的情况下不允许进行操作。(您试图执行只能在响应式表达式或观察器内部执行的操作。)

看起来我无法在reactiveValues中插入reactive values... 有什么解决办法吗?


观察({ rv <- reactiveValues(i = input$valstart) }) - Stéphane Laurent
1个回答

2

observeEvent在应用程序启动时不会被触发吗?

那这样怎么样:

最初的回答:

rv <- reactiveValues(i = 0)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接