f <- function(){
lo <- ls(envir=.GlobalEnv)
lo <- lo[sapply(lo,function(x) eval(substitute(class(X)=="data.frame",
list(X=as.name(x))))
)]
if(length(lo)>0){
res <- lapply(lo,function(x) eval(substitute(names(X),list(X=as.name(x)))))
names(res) <- lo
} else res <- NULL
return(res)
}
编辑
ls.names <- function(){
res <- lapply(mapply(as.name,ls(pos=1)),
function(x) if(class(xe<-eval(x))=="data.frame") names(xe))
res <- res[!unlist(lapply(res,is.null))]
return(res)
}
编辑2
eapply(env=.GlobalEnv,function(x) if(is.data.frame(x)) names(x))