如何查找所有附加的数据框?

时间:2015-04-17 18:25:42

标签: r dataframe attachment

当我在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?

1 个答案:

答案 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)))
}