2017-09-16 42 views
2

R函数里面可以定义一个函数属性吗?
它可以在外面定义,但是函数内部是否有自引用的符号?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 
+1

我很想知道这个用例。 –

+0

你的情况并没有解释为什么你需要在函数内部定义属性,而不是在函数外。 –

+0

因为每次我编辑我必须记住重新定义属性的函数。有时我会忘记... – xm1

回答

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")