2011-12-19 18 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'です。あなたが何をしているのか正確に知っていれば、リストに強制することはできませんが、 'a [-1]'は非常に奇妙に印刷され、例えば 'do.call'にargsとして渡すことはできません... – Tommy

関連する問題