繁体   English   中英

从R中的环境中删除对象

[英]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)

如果inheritsTRUE并且在指定环境中找不到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM