Как удалить подмножество переменных в локальной среде функции в R? - PullRequest
0 голосов
/ 31 мая 2019

Прямо перед тем, как функция вернется в R, я хотел бы удалить все локальные переменные , за исключением одной или двух.

Вот минимальный воспроизводимый пример:

f <- function(){
  keep_this_local_var <- 3
  remove_this_local_var <- 4
  rm(setdiff(ls(environment()), c("keep_local_var"))) # doesn't work
  return(ls(environment())) 
}
f() # should only be 3

Мотивация: моя "реальная жизнь" f функция вызывает source() несколько раз. При каждом вызове source() будет возможно большое количество случайных переменных. Я не буду знать имена каждой переменной заранее; тем не менее, у меня есть короткий список имен переменных, которые я хочу сохранить . Подобный код работал для меня в прошлом, но когда я source до .GlobalEnv.

1 Ответ

0 голосов
/ 31 мая 2019

Это работает:

f <- function(){
  keep_this_local_var <- 3
  remove_this_local_var <- 4
  rm(
    list=setdiff(ls(environment()), "keep_this_local_var"),
    envir = environment()
    )
  return(ls(environment())) 
}
f() # should only be 3

Как упоминает эта тема , вам нужно указать list=.

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