2014-12-12 3 views
1

나는 다음과 같은 기능을하는 내가 포함 된 메타 데이터는 "문서"변수를 추가 할 수 있습니다 함수에 메타 데이터를 추가

func <- function(x) 
{ 
    x 
} 
attr(func, "doc") = "some documentation" 

하지만 명확 위해 내가 좋아하는 것

함수의 일부 메타 데이터를 추가하기를 :

func <- function(x) 
{ 
    doc = "some documentation in the function" 
    x 
} 

그러나 내가하려고하면

env = environment(func) 
> env$doc 
NULL 
> get("doc", env) 

내가 필요로하는 정보를 검색하지 않습니다. 나는 확실히 큰 점을 놓치고있다!

+3

함수의 변수에 액세스하려면 함수를 "반환"해야합니다. 함수에 "메타"정보를 추가하는 한 가지 방법은 원하는대로 패키지를 만들고 정교한 문서를 만드는 것입니다. –

+0

하지만 R의 자체 문서 시스템을 선호 할 것입니다. 다른 구문을 사용하는 것은 좋은 습관이 아닙니다. 시도 roxygen. – OganM

답변

1

당신은 그것을 위해 클로저를 사용할 수없는 지정된 인수가없는 경우

docAdder <- function(fun, doc) { 
    newFun <- function(...) { 
     vars <- as.list(match.call()) 
     if(length(vars)<2) { 
      return(doc) 
     } 
     return(fun(...)) 
    } 
    newFun 
} 

이 기능은 단순히 원래의 함수 반환 "문서"를합니다. 그런 다음

는 :

rev2 <- docAdder(rev, "this function reverses a vector") 
rev2(c(1,2,3,4,5)) 
[1] 5 4 3 2 1 
rev2() 
[1] "this function reverses a vector 

그러나 로마 같은 패키지와 설명서를 사용하는 R에서이 작업을 수행하는 일반적인 방법은 말했다.