f <- function(x, y = 3){
z <- x + y
z^2
}
を取得することができ、このですか?
f <- function(x, y = 3){
z <- x + y
z^2
}
を取得することができ、このですか?
formalArgs
およびformals
は、この場合に有用な2つの関数です。パラメータ名だけを指定したい場合、formalArgs
は名前を与え、デフォルトを無視するので、より便利です。 formals
は、リストを出力として与え、リスト内の要素の名前としてパラメータ名を提供し、要素の値としてデフォルトを提供します。
f <- function(x, y = 3){
z <- x + y
z^2
}
> formalArgs(f)
[1] "x" "y"
> formals(f)
$x
$y
[1] 3
私の最初の傾きはちょうどformals
を示唆していたとあなただけのパラメータの名前を望んでいた場合は、names(formals(f))
ような名前を使用することができます。 formalArgs
関数は、あなたのためにそれを行うラッパーであるため、どちらの方法でも動作します。
編集:技術的にはプリミティブ関数には "形式"がないので、このメソッドはプリミティブで使用するとNULLを返します。その周りの方法は、formalArgs
に渡す前に、まずargs
に関数をラップすることです。これは、関数がプリミティブであるかどうかに関係なく機能します。
> # formalArgs will work for non-primitives but not primitives
> formalArgs(f)
[1] "x" "y"
> formalArgs(sum)
NULL
> # But wrapping the function in args first will work in either case
> formalArgs(args(f))
[1] "x" "y"
> formalArgs(args(sum))
[1] "..." "na.rm"
これは、例えば '^'や 'log'に対しては機能しません:\ – MichaelChirico
@MichaelChirico Hmmm。 .primitive呼び出しの単なるラッパーであるようなものは、同じ問題を抱えています。 – Dason
確かに私は基底で1つの引数の関数をすべて見つけようとしていて、この問題に遭遇しました - すべての良いものは基本的なラッパーです – MichaelChirico
チェックアウトは '?恐ろしい – Dason
をformals'!どちらも動作します。お気軽にお答えください。私は最初を受け入れます。 – landau
help( "args")またはそこにリンクされている関数の1つ。 – Roland