2011-12-19 4 views

답변

5

음, 호출하지 않습니다 도덕 만 실제 인수 ... foo <- function(x, y, ..., z=42) 같은 기능을 foo(42, bar=13) 같은 실제 인수를 호출 할 수있는 차이가있다.

...하지만 인수는 다음과 같이 수행 할 수 있습니다 지 :

a <- call('foo', a=42, 13) 
as.list(a)[-1] 
#$a 
#[1] 42 
# 
#[[2]] 
#[1] 13 

... 다른 한편으로는, 당신은 보통 (항상) 실제 기능을 발견하고 그것을위한 도덕을 찾을 수 있습니다 : 당신은에 대한 호출을 강요 할 필요는 없습니다

+2

다음
a <- quote(which(letters=='g')) formals(match.fun(a[[1]])) #$x # #$arr.ind #[1] FALSE # #$useNames #[1] TRUE 

기능 (위 foo에 대한 호출과 같은)를 찾을 수없는 경우 처리 일부 오류를 추가해야 할 것 ... 목록 - 당신은 그냥 w 수 있습니다. ork을 목록으로 사용하면 첫 번째 요소를 기억하는 한 함수입니다. 또한'match.fun'보다는'match.call'을 원할 것입니다 - 기본 및 제공된 인수를 결합 할 수 있습니다. – hadley

+0

글쎄,'match.fun' 대신에'match.call'을 원하지는 않을 것입니다 만,'match.call (eval (a [[1])), a)' – hadley

+0

@hadley - 언급 해 주셔서 감사합니다. 'match.call'. ''[-1]'은 매우 이상하게 인쇄 될 것이고, 예를 들어'do.call'에 args로 넘길 수는 없습니다. – Tommy

관련 문제