我怎么能只列出函数和那些来自包的函数

How can Iist only functions and those that come from a package

我使用 foreach 包来并行化一些东西,每次我需要使用它时,我都厌倦了在 .export 中指示 5 个函数。

我知道我可以做到 foreach(...,.export=ls(.GlobalEnv)) 但这会将大量数据传输给工作人员并减慢我的速度(可以定义大表)。

所以问题是我怎样才能只列出 .GlobalEnv

中的函数

我这样做了:

getAllFunctions <- function(envir=.GlobalEnv){
        allClasses <- sapply(grep(x=ls(envir), pattern='^%', value=TRUE, invert=TRUE), FUN=function(x){class(eval(parse(text=x)))})
        fnNames <- names(allClasses)[allClasses == 'function']
        return(fnNames)
}

但这很丑陋(并给出了一切),我相信有一种惯用的方式

来自评论:

as.list(.GlobalEnv)[sapply(.GlobalEnv, is.function)]