Чтение глобальной среды из функции в R - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно получить доступ (т.е. прочитать и сохранить) элементы среды, в которой я работаю. Я написал следующую функцию для сохранения всех объектов в моей (глобальной) среде:

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()), чтобы выполнить работу, но есть ли обходной путь?

1 Ответ

0 голосов
/ 11 июня 2019

Вероятно, самое чистое, чтобы передать окружающую среду:

fun <- function(envir = parent.frame()) ls(envir = envir)
fun()

В этом списке перечислены объекты в вызывающей стороне, а также пользователь может выбрать, какая среда используется. Например, они могут заставить глобальную среду использоваться:

fun(.GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...