【发布时间】:2019-06-11 11:41:32
【问题描述】:
我需要访问(即读取和保存)我正在工作的环境中的项目。我编写了以下函数来保存我的(全局)环境中的所有对象:
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()) 来完成这项工作,但有没有更简洁的方法?
【问题讨论】:
-
这应该可以解决问题:
ls(envir = .GlobalEnv) -
谢谢。 G. Grothendieck 提出了一种方法(传递
parent.frame()作为参数),该函数可以获得父环境(不限于全局环境)