【发布时间】:2017-07-16 04:35:55
【问题描述】:
在我的 shinyApp 中,我有一个全局变量:一个 R6Class,当我的应用程序完成后,我从 globalEnv 中删除该变量:
#' @importFrom shiny reactive
#' @export
gui <- function (port = getOption("shiny.port"),
host = getOption("shiny.host", "127.0.0.1"),
working.directory = getwd()) {
appDir <- system.file("shiny", "gui", package = "lidRGUI")
if (appDir == "") {
stop("Could not find shiny directory. Try re-installing `lidRGUI`.", call. = FALSE)
}
catalogModele <<- CatalogModele$new()
csvPlotsModel <<- CSVPlotsModel$new()
on.exit({
rm(list = c("catalogModele", "csvPlotsModel"), pos = ".GlobalEnv")
gc()
})
shiny::runApp(appDir, display.mode = "normal")
}
#----------------------------------
# Catalog Modele Class
#----------------------------------
#' @importFrom R6 R6Class
#' @importFrom shiny reactiveValues
#' @export CatalogModele
CatalogModele <- R6Class(
public = list(
catalogs = reactiveValues(),
add_catalog = function(key,value) {
self$catalogs[[key]] <- value
},
get_catalog = function(key) {
return(self$catalogs[[key]])
},
finalize = function() {
print("Finalize has been called!")
}
)
)
我第一次启动 gui() catalogModele$catalogs 是空的,但在第一次启动之后 catalogModele$catalogs 计数所有以前的初始化。
【问题讨论】: