簡體   English   中英

從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM