2010-12-08 5 views
2

없는 하나 개 이상의 인수에 대해 여러 값을 가진 함수를 실행합니다.은 첫 번째 사람 R에서

ys, T, N 및 시그마에 대한 고정 값이 있지만 베타 값 벡터와 감마 값 벡터 벡터가있는 경우 매번 myfun을 베타 값의 가능한 모든 조합과 함께 실행할 수 있습니다 감마?

lapply를 고려하고 있지만 시도 할 값이 많은 인수가 함수의 첫 번째 인수가 아니며 하나의 인수가 아닌지 지정하는 방법을 알지 못합니다.

아니면 lapply 또는 유사한 것들을 적용 할 수 있도록 myfun 함수를 다시 작성해야합니까?

아니면 루프를 사용해야합니까?

감사합니다.

답변

6

예를 들어 dt()와 같은 편리한 다중 인수 함수를 사용합시다. 우리는 ("mult") - "parallel"과 "const"에서 2 개의 인수를 제공하고 나머지 두 개의 고정 값을 제공합니다. 다중 인수 목록에 대해 expand.grid를 사용하여 데이터 프레임을 만든 다음 적절한 이름으로 mapply에 전달하고 나머지 인수에 MoreArgs를 사용합니다.

gamma <- 1:3 
beta <- 1:4 
gb.df <-expand.grid(gamma=gamma, beta=beta) 
mfun <- dt 
mapply ("mfun", x=gb.df$gamma, df=gb.df$beta, MoreArgs=list(ncp=1, log=FALSE)) 
    [1] 0.26355595 0.14379745 0.07896827 0.31785177 0.17910975 0.08636815 
    [7] 0.34118167 0.19555939 0.08572842 0.35411486 0.20513016 0.08355531 
2

모든 조합 부분에 대해 expand.grid와 함께 mapply 및 Vectorize 함수를 살펴보십시오.

+0

+1, 강력한 것. –