【问题标题】:Determine the namespace of a function within an anonymous function确定匿名函数中函数的命名空间
【发布时间】:2018-10-28 20:45:44
【问题描述】:

我的问题和这个很相似: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>

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

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用 pryr 库,它是用于计算语言的工具集合。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 2010-09-14
      • 2016-11-01
      • 2011-09-19
      • 2012-01-21
      相关资源
      最近更新 更多