我想在退出闪亮的应用程序后清除定义的全局变量。
我所做的是在闪亮的 onStop
中添加一个 server.R
。但它不起作用。
非常感谢您的帮助。
onStop(function(){
rm(list = ls(all.names = TRUE))
})
答案 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))
})
}
)