Удаление объекта из родительской среды с помощью rm () - PullRequest
5 голосов
/ 21 марта 2010

Я пытаюсь удалить объект из родительской среды.

rm_obj <- function(obj){
  a <-deparse(substitute(obj))
  print (a)
  print(ls(envir=sys.frame(-1)))  
  rm(a,envir=sys.frame(-1))
}
> x<-c(1,2,3)
> rm_obj(x)
[1] "x"

[1] "rm_obj" "x"    
Warning message:
In rm(a, envir = sys.frame(-1)) : object 'a' not found

Это поможет прояснить мое недопонимание относительно фреймов.

Ответы [ 2 ]

10 голосов
/ 21 марта 2010

Ваши кадры верны, я думаю, просто rm пытается удалить a вместо оценки a, чтобы получить имя переменной для удаления в кавычках Вместо этого используйте параметр list:

rm(list=a,envir=sys.frame(-1))
1 голос
/ 17 ноября 2017

У меня работает следующий код.

myEnv = new.env()
assign('xx', 5, envir=myEnv)
get('xx', envir=myEnv)
rm('xx', envir=myEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...