我的问题与此问题非常相似:How do you you determine the namespace of a function?
我们可以使用environment
获取函数的环境,并可能将其与getNamespaceName
结合使用:
environment(mean)
#> <environment: namespace:base>
getNamespaceName(environment(mean))
#> [1] "base"
我想为匿名函数实现类似的东西:
anon_f <- function(x) mean(x)
此功能的环境显然是全局环境,并且没有命名空间:
environment(anon_f)
#> <environment: R_GlobalEnv>
是否有可能以某种方式“进入”匿名函数并在匿名函数中获取函数的环境/命名空间?
答案 0 :(得分:2)
您可以使用pryr库,这是一组用于计算语言的工具。
library(pryr)
f <- fget(fun_calls(anon_f))
getNamespaceName(environment(f))
# [1] "base"
对于函数体中的多个调用,您必须使用循环。我不定期使用这个库,所以可能有更简单的方法。