[英]Deleting objects from environment in R
我正在阅读Hadley的AdvancedR。在第8章中,他说我们可以使用rm()
从环境中删除对象。 但是,删除该对象后仍然可以看到该对象。
这是我的代码:
e<- new.env()
e$a<-1
e$b<-2
e$.a<-3
e$c<-4
ls(e,all.names = TRUE)
#remove the object c
rm("c",envir = e)
ls(e,all.names = TRUE) #Doesn't exist here
#does the variable exist?
exists("c",envir = e) #Shows TRUE. Why is this?
exists("m",envir = e) #FALSE
ls(e,all.names = TRUE)
ls(e)
正如我们在上面看到的那样,理想情况下,我期望exists("c", envir = e)
返回FALSE
。
有什么想法吗? 提前致谢。
来自help(exists)
:
如果
inherits
为TRUE
并且在指定环境中找不到x
的值,则搜索环境的包围框架,直到遇到名称x
。
命名变量时要小心。 您与基本函数c()
有冲突。 由于默认情况是inherits = TRUE
,因此将搜索封闭环境,在这种情况下,将找到基本函数c()
,从而产生TRUE
结果。 因此,要仅搜索环境e
然后退出,请使用inherits = FALSE
。
exists("c", envir = e, inherits = FALSE)
# [1] FALSE
看来您的问题是e $ c具有NULL值,请尝试使用
exists("c", envir = e, inherits = FALSE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.