【问题标题】:R define a function attribute inside the functionR在函数内部定义一个函数属性
【发布时间】:2018-02-25 14:09:39
【问题描述】:

R 是否可以在函数内部定义函数属性?
它可以在外部定义,但函数内部是否有自引用的表示法?

f2 = function(x) {
   x/2
   attr(thisObject(),'type')='half' #something like thisObject()
}

在函数之外很容易做到这一点:

attr(f2,'type')='half'

在某种情况下,我需要知道传递了什么样的函数:

fCalc=function(f=f2,x){
  if(attr(f,'type')=='half') {
    cat('ok\n')
    return(f(x))
  } else cat( 'not ok')
}
fCalc(f2,4)
ok
[1] 2

【问题讨论】:

  • 我很想知道这个用例。
  • 您的情况并不能解释为什么需要在函数内部定义属性,而不是在函数外部。
  • 因为每次我编辑函数时,我都必须记住重新定义属性。有时我会忘记...
  • 函数内部有一种自引用形式。看看?Recall。它是否能处理您的用例尚不清楚。
  • 我不知道如何使用它。 Recall(attr(ModeloGAMBoost,'tipo')='GAMBoost')attr(Recall(),'tipo')='GAMBoost' 都不起作用。

标签: r function attr


【解决方案1】:

如果你想用R编写Java程序,你可以定义一个函数工厂:

fact <- function(args, expr, attrib)
{
    f <- function() { }
    formals(f) <- args
    body(f) <- substitute(expr)
    attr(f, "type") <- attrib
    f
}

fact(alist(x=), x/2, "foo")

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多