88

R はすべての関数引数を取得するためのオブジェクト/関数/メソッド/キーワードを提供しますか?

例を使用 すると、機能環境内と同様にfunction(a, b="default", ...)提供されます。結果にandも含まれる同様のステートメントはありますか?ab...list(...)ab

または、さらに別の言い方をすればlist(a=a, b=b, ...)、与えられた の略記function(a, b, ...)

4

7 に答える 7

85

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

これにより、引数値の名前付きリストが作成されます。

于 2013-06-21T20:46:18.393 に答える
72

私はあなたが欲しいと思います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
于 2012-08-09T22:07:19.347 に答える
17

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))
于 2012-08-09T14:06:00.303 に答える
8

私はあなたが探していると信じていますformals

formals(sd)
$x


$na.rm
[1] FALSE

これを使用dputすると、質問で指定したフォームが得られます。

dput(formals(sd))
list(x = , na.rm = FALSE)

プリミティブformals関数では機能せず、クロージャーのみであることに注意してください。

于 2012-08-09T14:36:04.653 に答える
2
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)
于 2019-03-08T19:13:47.543 に答える