我想构建一个 R Shiny 应用程序,它能够将信息从一个正在运行的实例传递到其他可能的运行实例。到目前为止,我没有发现任何可以帮助我解决这个问题的方法,我希望能做对,而不是求助于全局变量和/或写入文件等(我在下面的示例中使用了全局变量,我知道这是一个不好的做法;而且我怀疑写入文件也不是一个好习惯)。
例如,假设我的 App.R 在服务器上运行,并且Tim、Jack和John将其打开。当Jack和John同时使用该应用程序并按下下例所示的按钮时,如何让Tim看到下面的内容?
应用程序R:
library(shiny)
# Somehow interactively visible variable? (I know global variables are bad, I wouldn't want to use such)
txt <<- ""
shinyApp(
ui = fluidPage(
textInput("name", "User name", value="USERNAME"),
actionButton("button", "Button"),
htmlOutput("text")
),
server = function(input, output, session){
a <- eventReactive(input$button, {
txt <<- paste(txt, "Button pressed by", input$name, "at", Sys.time(), "<br>")
txt
})
output$text <- reactive({
HTML(a())
})
}
)
在浏览器中运行应用程序实例的各个用户按下多个按钮后所需的输出示例(都选择了唯一的 input$name,但显然唯一的会话 id 会更好):
任何见解将不胜感激,谢谢!