R在函数中定义函数属性

R在函数中定义函数属性,r,function,attr,R,Function,Attr,是否可以在函数内部定义函数属性? 它可以在外部定义,但函数内部是否有用于自引用的符号 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')

是否可以在函数内部定义函数属性?
它可以在外部定义,但函数内部是否有用于自引用的符号

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

如果要在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")

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