是否有可能将功能置于主动绑定之后?

时间:2016-08-25 12:14:47

标签: r

在R中,我们可以使用makeActiveBinding通过提供函数来创建活动绑定:

e <- new.env()
makeActiveBinding("var", 
  function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)

创建活动绑定后,似乎无法获得它背后的功能。

我想知道是否有可能获得活动绑定背后的功能,如下所示?

> getActiveBindingFunction("var", e)
function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)

2 个答案:

答案 0 :(得分:1)

R 4.0.0 起,您可以直接使用activeBindingFunction()。它并没有真正的记录,但是足够简单!

e <- new.env()
makeActiveBinding("var", 
                  function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)
activeBindingFunction("var", e)
#> function(x) if (missing(x)) cat("get\n") else cat("set\n")

答案 1 :(得分:0)

答案前往hrbrmstr。您可以将环境强制为列表,然后访问该功能。请参见下面的代码:

e <- new.env()
makeActiveBinding("var", function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)
as.list(e)$var

输出:

function(x) if (missing(x)) cat("get\n") else cat("set\n")