R はすべての関数引数を取得するためのオブジェクト/関数/メソッド/キーワードを提供しますか?
例を使用
すると、機能環境内と同様にfunction(a, b="default", ...)
提供されます。結果にandも含まれる同様のステートメントはありますか?a
b
...
list(...)
a
b
または、さらに別の言い方をすればlist(a=a, b=b, ...)
、与えられた の略記function(a, b, ...)
R はすべての関数引数を取得するためのオブジェクト/関数/メソッド/キーワードを提供しますか?
例を使用
すると、機能環境内と同様にfunction(a, b="default", ...)
提供されます。結果にandも含まれる同様のステートメントはありますか?a
b
...
list(...)
a
b
または、さらに別の言い方をすればlist(a=a, b=b, ...)
、与えられた の略記function(a, b, ...)
1 つの解決策は、次を使用することです。
tempf <- function(a, b = 2, ...) {
argg <- c(as.list(environment()), list(...))
print(argg)
}
tempf(1, c = 3)
$a
[1] 1
$b
[1] 2
$c
[1] 3
これにより、引数値の名前付きリストが作成されます。
私はあなたが欲しいと思いますmatch.call
:
tmpfun <- function(a,b,...) {
print(as.list(match.call()))
print(as.list(match.call(expand.dots=FALSE)))
}
> tmpfun(a=1, b=2, c=3, d=4)
[[1]]
tmpfun
$a
[1] 1
$b
[1] 2
$c
[1] 3
$d
[1] 4
[[1]]
tmpfun
$a
[1] 1
$b
[1] 2
$...
$...$c
[1] 3
$...$d
[1] 4
args
関数を試す
mean
関数の引数は何ですか?
> args(mean)
function (x, ...)
NULL
lm
機能はどうですか?
> args(lm)
function (formula, data, subset, weights, na.action, method = "qr",
model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE,
contrasts = NULL, offset, ...)
NULL
引数のリストを取得したい場合は、試してください
as.list(args(lm))
私はあなたが探していると信じていますformals
:
formals(sd)
$x
$na.rm
[1] FALSE
これを使用dput
すると、質問で指定したフォームが得られます。
dput(formals(sd))
list(x = , na.rm = FALSE)
プリミティブformals
関数では機能せず、クロージャーのみであることに注意してください。
test <- function(
x = 1,
y = 2,
...
) {
if(length(list(...)) == 0) {
print(as.list(environment()))
} else {
print(c(as.list(environment()), list(...)))
}
}
test()
test(z = 3)