인자 매칭

인자 매칭 (Argument matching)

R에서 함수 호출 시 형식 인자와 실제 인자가 어떻게 매칭되는지, 세 단계의 매칭 과정과 부분 매칭 규칙을 설명할게요.

출처: 문서

본문

4.3.2 Argument matching

이 하위 절은 클로저(closure)에는 적용되지만 원시 함수(primitive function)에는 적용되지 않아요. 원시 함수는 일반적으로 태그(tag)를 무시하고 위치 기반 매칭을 수행하지만, 예외 사항이 있으니 해당 도움말 페이지를 참고해야 해요. 예외에는 log, round, signif, rep, seq.int가 포함돼요.

함수 평가(function evaluation)에서 가장 먼저 일어나는 일은 형식 인자(formal argument)를 실제(또는 제공된) 인자(actual or supplied argument)에 매칭하는 거예요. 이 과정은 세 단계로 이루어져요.

태그에 대한 정확한 매칭 (Exact matching on tags).

이름이 지정된 각 제공 인자에 대해 형식 인자 목록에서 이름이 정확히 일치하는 항목을 찾아요. 동일한 형식 인자가 여러 실제 인자와 매칭되거나 그 반대의 경우에는 오류예요.

태그에 대한 부분 매칭 (Partial matching on tags).

나머지 이름이 지정된 제공 인자는 부분 매칭(partial matching)을 사용하여 나머지 형식 인자와 비교돼요. 제공 인자의 이름이 형식 인자의 앞부분과 정확히 일치하면 두 인자가 매칭된 것으로 간주해요. 부분 매칭이 여러 개 발생하면 오류예요. f <- function(fumble, fooey) fbody에서 f(f = 1, fo = 2)는 두 번째 실제 인자가 fooey에만 매칭되더라도 불법(illegal)이라는 점에 유의하세요. 반면 f(f = 1, fooey = 2)는 두 번째 인자가 정확히 매칭되어 부분 매칭 고려 대상에서 제외되므로 합법이에요. 형식 인자에 ...가 포함되어 있으면 부분 매칭은 그 앞에 있는 인자에만 적용돼요.

위치 기반 매칭 (Positional matching).

매칭되지 않은 형식 인자는 순서대로 이름 없는 제공 인자에 바인딩돼요. ... 인자가 있으면 태그 여부와 관계없이 나머지 인자들을 모두 받아요. 그래도 매칭되지 않은 인자가 남아 있으면 오류가 발생해요.

인자 매칭은 match.arg, match.call, match.fun 함수에 의해 보강될 수 있어요.

R이 사용하는 부분 매칭 알고리즘은 pmatch로 접근할 수 있어요.

더 알아보기 (Learn more)

출처: R Language Definition - 인자 매칭