闪亮的应用程序结束后,R闪亮的清除全局变量

时间:2021-07-22 21:48:16

标签: r shiny

我想在退出闪亮的应用程序后清除定义的全局变量。

我所做的是在闪亮的 onStop 中添加一个 server.R。但它不起作用。

非常感谢您的帮助。

onStop(function(){
 rm(list = ls(all.names = TRUE))
})

1 个答案:

答案 0 :(得分:1)

要在应用停止上运行代码,您需要提供 onStop 作为 shinyApp 的参数(嵌套在 onStart 回调函数中)。

如果您将 onStop 放在服务器函数中,它将在会话停止后运行(例如关闭浏览器窗口)。

请检查以下内容以了解区别:

library(shiny)

myGlobalVaribale <- "Some useful global content"

ui <- basicPage(p(myGlobalVaribale),
                actionButton("stopSession", "Stop session"),
                actionButton("stopApp", "Stop app")
)

server <- function(input, output, session) {
  
  onStop(function() cat("This will run on session stop\n"))
  
  observeEvent(input$stopSession, {
    cat(sprintf("Closing session %s\n", session$token))
    session$close()
  })
  
  observeEvent(input$stopApp, {
    cat("Stopping shiny app\n")
    stopApp()
  })
}

shinyApp(ui, server,
         onStart = function() {
           cat("This will run on app start\n")
           onStop(function() {
             cat("This will run on app stop\n")
             print(ls(envir = .GlobalEnv))
             rm(list = c("myGlobalVaribale"), envir = .GlobalEnv)
             print(ls(envir = .GlobalEnv))
           })
         }
)