当我在R studio中附加data.frame时,我收到此消息:
以下对象被掩盖......
我忘了分离data.frame
data<-read.table(file.choose(),header=TRUE)
View(data)
attach(data)
## The following objects are masked from vih (pos = 3):
## edad, edadg, id, numpares, numparg, sifprev, udvp, vih
## The following objects are masked from vih (pos = 4):
## edad, edadg, id, numpares, numparg, sifprev, udvp, vihhere
有没有办法知道哪些data.frames被附加?
有没有办法用一个命令或函数分离所有data.frame?
答案 0 :(得分:8)
首先,我建议您停止使用attach()
。这确实是一种不好的做法,因为几乎总有更好的替代方案(例如with()
或data=
参数)
但是你可以用
看到附加的对象search()
如果您假设所有data.frame名称都不以“。”开头。并且不包含“:”,您可以使用
将它们全部分开detach_dfs1 <- function() {
dfs <- grep("^\\.|.*[:].*|Autoloads", search(), invert=T)
if(length(dfs)) invisible(sapply(dfs, function(x) detach(pos=x)))
}
或者如果您假设data.frames在全局环境中,则可以执行
detach_dfs2 <- function() {
dfs <- Filter(function(x) exists(x) && is.data.frame(get(x)), search())
if(length(dfs)) invisible(sapply(dfs, function(x) detach(x, character.only=T)))
}