[英]Finding all functions in current workspace
我想找到当前工作空间中的所有函数,并考虑使用is.function
来实现此目的。
“问题”是is.function
需要一个真正的R 对象 ,而不是对象的字符串名称 。
这是我的解决方案,但使用eval(substitute(...))
似乎有点牵扯。 任何想法更直接的方式或是唯一的方法可以做到这一点?
示例内容
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
查找所有函数对象
wscontent <- ls(all.names=TRUE)
funs <- sapply(wscontent, function(ii) {
eval(substitute(is.function(OBJ), list(OBJ=as.name(ii))))
})
> funs
foo1 foo2 funs wscontent x y
TRUE TRUE FALSE FALSE FALSE FALSE
怎么样
lsf.str()
哪个应列出所有功能。
funs <- sapply(wscontent, function(x) is.function(get(x)))
我不久前写了一个更普通的玩具:
lstype<-function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
你可以使用eapply:
which(unlist(eapply(.GlobalEnv, is.function)))
...或者使用as.list:
which(sapply(as.list(.GlobalEnv), is.function))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.