2015-04-17 33 views
2

當我附上中的R工作室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.frames?

回答

7

首先,我建議你停止使用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))) 
}