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

use*_*410 5 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
Run Code Online (Sandbox Code Playgroud)

这将有助于澄清我对框架的误解.

Jon*_*ang 10

我认为你的框架是正确的,它只是rm试图删除a自己而不是评估a以获取要删除的变量的引用名称.请改用list参数:

rm(list=a,envir=sys.frame(-1))
Run Code Online (Sandbox Code Playgroud)