使用rm()从父环境中删除对象

时间:2010-03-21 02:28:39

标签: r

我正在尝试从父环境中删除对象。

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 个答案:

答案 0 :(得分:10)

我认为您的框架是正确的,只是rm尝试删除a本身,而不是评估a以获取要删除的变量的引用名称。请改用list参数:

rm(list=a,envir=sys.frame(-1))

答案 1 :(得分:1)

以下代码适用于我。

myEnv = new.env()
assign('xx', 5, envir=myEnv)
get('xx', envir=myEnv)
rm('xx', envir=myEnv)