2014-09-30 4 views
0

일부 사용자 정의 작은 함수를 도우미로 사용합니다. 이 기능은 모두 R_HOME_USER/helper 디렉토리에 저장됩니다. 지금까지 이러한 기능은 R 시작시에 제공되었습니다. 전체적인 방법은`lapply (my.helper.list, source)와 같다. 나는 지금이 기능들이 으로 출처를 나타내지 만 내 환경에서는 나타나지 않기를 바란다..새 환경에서 R 사용자 정의 함수

첫 번째 깨끗한 방법은 모든 도우미가 포함 된 패키지를 만드는 것입니다. 현재로서는이 방법을 따르고 싶지 않습니다. 두 번째 접근법은 이러한 도우미를 선도 점으로 명명하는 것입니다. 이것은 R > .helper1()을 실행해야 나를 귀찮게.

가장 좋은 방법은 특정 환경에서 이러한 헬퍼를 정의하는 것이지만 코드를 망치고 있습니다. 내 생각은 먼저 새 환경을 만드는 것입니다 :

.helperEnv <- new.env(parent = baseenv()) 
attach(.helperEnv, name = '.helperEnv') 

좋아, R > search() 수익을 'helperEnv' 목록입니다.

assign('helper1', helper1, envir = .helperEnv) 
rm(helper1) 

좋아, ls(.helperEnv) 반환 'helper1'을이 기능은 내 환경에 더 이상 나타나지 않는 : 그럼 실행합니다. 문제는 helper1 (개체를 찾을 수 없음)을 실행할 수 없다는 것입니다. 나는 옳은 길을 가고 있지 않고 몇 가지 힌트를 주셔서 감사합니다.

+4

별도의 환경을 설정하는 노력의 문제를 통해 갈 경우, 왜 그냥 패키지를 해? 수많은 사람들이 이러한 유형의 도우미 기능을 갖춘 개인 R 패키지를 사용합니다. – hrbrmstr

+0

@hrbrmstr이 패키지를 수행하는 것은 다음 단계입니다. – gabx

답변

1

나는 당신이 음수로 attach에 호출에서 pos 인수를 할당해야한다고 생각 :

.helperEnv <- new.env() 
    .helperEnv$myfunc<-function(x) x^3+1 
    attach(.helperEnv,name="helper",pos=-1) 
    ls() 
    #character(0) 
    myfunc 
    #function(x) x^3+1 
+1

은 매력처럼 작동합니다 .Y – gabx