Блестящий: наблюдать изменение в глобальной переменной

Я делаю очень простую игру в Shiny. По сути, каждый игрок играет в своем собственном сеансе, но у него есть одна глобальная переменная, чтобы отслеживать результаты каждого игрока.

Я думаю, что мне удается, чтобы сеансы обновляли глобальную переменную "показателей", но по какой-то (возможно, глупой) причине я не могу заставить глобальную переменную действовать как реактивное значение (то есть автоматически вызывать updateActionButton). Минимальный код ниже:

рабочий пример:

score <- c(100) 

ui <- fluidPage(
  titlePanel("Hello Shiny!"),
  mainPanel(
    actionButton("increase_score", label = " increase score player 1 "),
    verbatimTextOutput("show_score_p1")
  )
)

# Server logic
server <- function(input, output){
  observeEvent(input$increase_score,{
    score[1] <- score[1]+10
  })
  output$show_score_p1 <- renderText({paste(score[1])})  
}

shinyApp(ui,server)

Я попробовал несколько методов, чтобы попытаться сделать мою глобальную "оценку" реактивной, то есть makeReactiveBinding (оценка), но безрезультатно. Есть идеи? Определенно кажется, что я упускаю что-то супер-очевидное

1 ответ

Использование может использовать полезную функцию под названием reactiveValues

library(shiny)
ui <- fluidPage(
  titlePanel("Hello Shiny!"),
  mainPanel(
    actionButton("increase_score", label = " increase score player 1 "),
    verbatimTextOutput("show_score_p1")
  )
)

score<-reactiveValues(a=100)
# Server logic
server <- function(input, output){

  observeEvent(input$increase_score,{
    score$a <- score$a+10
  })
  output$show_score_p1 <- renderText({
    score$a
  })  
}

shinyApp(ui,server)
Другие вопросы по тегам