每次点击actionButton时,R闪亮变量都会增加1

Sub*_*rit 2 r shiny

我希望每次增加 actionButton 时变量 x 的值都增加 1,例如,请参见下面的可重现代码。然而,observeEvent 内部的代码是隔离的,x 的值不会增量更新。

library(shiny)

ui <- fluidPage(
  actionButton("plus","+1"),
  textOutput("value")
)

server <- function(input, output, session) {
  x = 1
  observeEvent(input$plus,{
    x = x+1
    output$value = renderText(x)
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

您需要确保要更改的值是反应性的。您可以x使用 进行反应式操作reactiveVal()x然后,当您想要调用的当前值时,x()以及当您想要更改 的值时x,您可以使用x(<new value>)

library(shiny)

ui <- fluidPage(
  actionButton("plus","+1"),
  textOutput("value")
)

server <- function(input, output, session) {
  x = reactiveVal(0)
  observeEvent(input$plus,{
    x(x()+1) # increment x by 1
  })
  output$value = renderText(x())
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)