确定匿名函数中函数的命名空间

时间:2018-05-18 11:55:42

标签: r

我的问题与此问题非常相似: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>

是否有可能以某种方式“进入”匿名函数并在匿名函数中获取函数的环境/命名空间?

1 个答案:

答案 0 :(得分:2)

您可以使用pryr库,这是一组用于计算语言的工具。

library(pryr)
f <- fget(fun_calls(anon_f))
getNamespaceName(environment(f))
# [1] "base"

对于函数体中的多个调用,您必须使用循环。我不定期使用这个库,所以可能有更简单的方法。