r语言 - 闪亮:观察全局变量的变化



我正在用Shiny制作一个非常简单的游戏。基本上每个玩家都在自己的会话中玩游戏,但他们共享 1 个全局变量来跟踪每个玩家的分数。

我认为我成功地让会话更新了全局"分数"变量,但由于某些(可能是愚蠢的(原因,我无法让全局变量充当反应值(即自动触发 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(score(,但无济于事。有什么想法吗?绝对感觉我错过了一些超级明显的东西

可以使用一个名为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)

最新更新