任意の関数のパラメータとそれぞれのデフォルト値を抽出する方法はありますか?以外の関数?例えば任意の関数から関数のパラメータとデフォルト値を抽出する
、与えられた:
myfunc <- function(a, b = 1) { print(c(a, b)) }
を私が返されますいくつかの機能を探しています:
list(a = NULL, b = 1)
またはそれらのいくつかのバリエーション。
任意の関数のパラメータとそれぞれのデフォルト値を抽出する方法はありますか?以外の関数?例えば任意の関数から関数のパラメータとデフォルト値を抽出する
、与えられた:
myfunc <- function(a, b = 1) { print(c(a, b)) }
を私が返されますいくつかの機能を探しています:
list(a = NULL, b = 1)
またはそれらのいくつかのバリエーション。
あなたはformals()
を探しています。
formals(myfunc)
# $a
#
#
# $b
# [1] 1
あなたがa
ためNULL
を必要とする場合は、いくつかのチェックを行うことができます。 a
は「名前」クラスになり、空になります。
lapply(formals(myfunc), function(x) if(is.name(x) & !nzchar(x)) NULL else x)
# $a
# NULL
#
# $b
# [1] 1
あなたは "空"と呼んでいるものを検出するために 'missing(x)'を使うことができました。論理を返します。私は 'is.null'を最初に試してみたところ、エラーが出ていると推測していますが、' missing'はその引数を評価しようとしません。 –
@ 42- - どういう意味ですか? 'lapply(formals(myfunc)、function(x)missing(x))'を実行すると、私は両方に対してFALSEになります。 'a'は実際にはnullではなく、' '' '' –
'myfunc < - function(a、b = 1){print(missing(a))}のため、' is.null() 'もFALSEを返します。 ; myfunc(); #TRUE'それはNULLではないと約束しました。 'missing 'は関数の中で意味を持ち、' lapply'で形式を渡すことで同じ情報が得られるとは思わない。 'missing'を' is.null'に変更して実行すると、代わりにTRUEではなくエラーが発生します。 –
なぜ引数 "a"に 'NULL'を使用しますか? 'function(a、b = 1、c = NULL)の結果はどうなるでしょうか? –