2016-10-07 4 views
0

안녕하세요 두 가지 하위 기능을 사용하려면 주 함수에 인수 목록을 전달하고 싶습니다.R- 구분 인수 값

f1은 "a"라는 이름의 인수를 취하고 f2는 "a"라는 이름의 인수를 취한다고 가정합니다. 이 문제를 어떻게 해결할 수 있습니까? 이름 "a"는 main 함수와 두 개의 하위 함수 내에서 사용됩니다. 나는 "a"라는 이름이 다른 기능들과 구별되도록 노력하고 있지만 매우 어려운 작업으로 보인다.

나는 더 구체적인 예를 입력으로

f<-function(x,...){ 
     print(mean(x)) 
     x1<-dnorm(...) 
     x2<-dbinom(...) 
     } 

물론, dnorm 및 dbinom 사용하여 이름을 "x"를 제공 할 수 있습니다. 그러나 각 하위 함수에 다른 x 값을 사용하고 싶습니다. 또한, 주 x가 벡터이기 때문에 주 함수 내에서 이름 "x"를 사용하여 평균을 계산하려고합니다.

답변

0

이름이 같기 때문에 구별하는 방법이 필요합니다. 또는 지적한대로 충돌이 발생합니다. 그 이상의 많은 마법은 없습니다. 문제를 발견했습니다. dnorm 오류가 발생하기 때문에 예를 들어, 그것을 size 인수를 주면

는 또한, dnormdbinom - 특정 인수를 유지하는 방법이 필요합니다.

당신은 예를 들어 모든 관련 인수, 밖으로 작성할 수 있습니다

f<-function(x,dnx, mean=0, sd=1, dnlog=FALSE, dbx, size, prob, dblog=FALSE, ...){ 
    print(mean(x)) 
    x1<-dnorm(x=dnx, mean, sd, log=dnlog) 
    x2<-dbinom(x=dbx, size, prob, log=dblog) 
} 

또는리스트로 공급 :

f<-function(x, 
      dn_args=list(x=0, mean = 0, sd = 1, log = FALSE), 
      db_args=list(x=5, size=10, prob=0.5, log = FALSE), ...){ 
    print(mean(x)) 
    x1<-do.call(dnorm, dn_args) 
    x2<-do.call(dbinom, db_args) 
    } 

당신이 작은 조각으로 기능을 리팩토링 할 필요가 있는지 또한 고려할 수 . :)