在ReactiveValues中插入反应式值

时间:2019-02-25 23:51:49

标签: r shiny reactive

我有以下“闪亮应用”

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)

但这给我以下错误:

  

.getReactiveEnvironment()$ currentContext()中的错误:操作不正确   允许没有活动的响应上下文。 (您尝试做某事   只能从反应表达式或观察者内部完成。)

似乎我无法在反应性值中插入反应性值...任何解决方案?

1 个答案:

答案 0 :(得分:1)

在应用程序启动时未触发watchEvent吗?

怎么样:

rv <- reactiveValues(i = 0)

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