感谢斯蒂芬妮的参考。如果在 shinyServer() 之前定义了一个对象,那么在 shinyServer() 中的任何位置使用
我将一个带有计数器和实例 ID 的小应用程序放在一起进行测试。运行应用程序的两个实例并在它们之间切换增加计数演示了 的效果
ui.r
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Testing Environments"),
sidebarPanel(
actionButton("increment_counter", "Increase Count")
),
mainPanel(
tabsetPanel(
tabPanel("Print", verbatimTextOutput("text1"))
))
))
server.r
instance_id<-1000
shinyServer(function(input, output, session) {
instance_id<<-instance_id+1
this_instance<-instance_id
counter<-0
edit_counter<-reactive({
if(input$increment_counter>counter){
counter<<-counter+1
}
list(counter=counter)
})
output$text1 <- renderPrint({
cat(paste("Session ID: ",Sys.getpid()," \n"))
cat(paste("Global Instance ID: ",instance_id," \n"))
cat(paste("This Instance ID: ",this_instance," \n"))
cat(paste("Button Value: ",input$increment_counter," \n"))
cat(paste("Counter Value: ",edit_counter()$counter," \n"))
})
}) # end server function