2012-11-06 2 views
3

내가 거기에 몇 가지 기능을 가진 파일 "myfuncs.R"이 말 :R 스크립트에서 함수를 추출하는 더 좋은 방법은 무엇입니까?

내가 적절하게 이름을 자신의 파일로 "myfuncs.R"에 포함 된 모든 기능을 배치 할
A <- function(x) x 
B <- function(y) y 
C <- function(z) z 

. 이 스크립트는 명백한 한계가있다,

func_A.R 
func_B.R 
func_C.R 

을하지만 :

split -p "function\(" myfuncs.R tmpfunc 
grep "function(" tmpfunc* | awk '{ 
    # strip first-instances of function assignment 
    sub("<-", " ") 
    sub("=", " ") 
    sub(":", " ") # and colon introduced by grep 
    mv=$1 
    mvto=sprintf("func_%s.R",$2) 
    print "mv", mv, mvto 
}' | sh 

나를 떠나 : 나는 기능을 추출하여 별도의 파일에 배치하는 간단한 배쉬 쉘 스크립트가 있습니다. 모든 기능이 한 줄에있는 경우 실패 크게

A <- function(x){ 
    Aa <- function(x){x} 
    return(Aa) 
} 

과 : 기능 'A'는 중첩 된 함수가있는 경우 예를 들어, 무례한 행동을 할 것이다.

누가 더 강력하고 오류가 발생하기 쉬운 방법을 알고 있습니까?

+1

패키지를 만듭니다. –

+0

그게 목표이지만 기능을 개별 파일로 분할하면 문서를 만드는 것이 훨씬 쉬워 보입니다. –

+1

사실이 아닙니다. 'roxygen'을 사용하여 인라인 문서를 생성하십시오. – Andrie

답변

7

소스 당신의 기능을 다음 package.skeleton()

별도의 파일을 입력은 각 기능에 대하여 설명한다.

+2

'dump '는'function'객체의 텍스트 표현을 작성하기 위해'package.skeleton() '에서 사용되는 함수이다. 따라서 함수를 저장하고 패키지 프레임 워크를 처리하지 않으려는 경우이를 사용할 수 있습니다. –

관련 문제