![](/img/trans.png)
[英]Updating a nested list object in the global environment from within a function in R
[英]Reading global environment from within a function in R
我需要訪問(即讀取和保存)我正在處理的環境項。我編寫了以下函數來保存我(全局)環境中的所有對象:
save_vars <- function(list.of.vars = NULL,
prefix = "StatusQuo",
path = "data") {
if(is.null(list.of.vars)) list.of.vars <- ls()
date_time <- Sys.time()
if (!is.null(path))
path <- paste0(path, "/")
file_name <- paste0(path, prefix, "_", date_time, ".RData")
save(list = list.of.vars, file = file_name)
}
這個想法是,如果沒有list.of.vars
參數傳遞給函數,使用ls()
,該函數訪問調用save_vars
的環境的變量。 但是,它只將變量保存在函數本身的范圍內。 我知道我可以將函數稱為save_vars(ls())
來完成這項工作,但它有更簡潔的方法嗎?
通過環境可能最干凈:
fun <- function(envir = parent.frame()) ls(envir = envir)
fun()
這將列出調用方中的對象,但也允許用戶更改使用的環境。 例如,他們可以強制使用全局環境:
fun(.GlobalEnv)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.