2017-09-16 40 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")