获取 R 函数的参数名称
Get the argument names of an R function
对于任意函数
f <- function(x, y = 3){
z <- x + y
z^2
}
我希望能够使用 f
的参数名称
> argument_names(f)
[1] "x" "y"
这可能吗?
formalArgs
和 formals
是在这种情况下很有用的两个函数。如果您只想要参数名称,那么 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
函数只是一个包装器,可以为您完成此操作,因此无论哪种方式都可以。
编辑:请注意,技术上原始函数没有 "formals",因此如果用于原始函数,此方法将 return NULL。一种解决方法是先将函数包装在 args
中,然后再传递给 formalArgs
。无论功能是否原始,这都有效。
> # 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"
对于任意函数
f <- function(x, y = 3){
z <- x + y
z^2
}
我希望能够使用 f
> argument_names(f)
[1] "x" "y"
这可能吗?
formalArgs
和 formals
是在这种情况下很有用的两个函数。如果您只想要参数名称,那么 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
函数只是一个包装器,可以为您完成此操作,因此无论哪种方式都可以。
编辑:请注意,技术上原始函数没有 "formals",因此如果用于原始函数,此方法将 return NULL。一种解决方法是先将函数包装在 args
中,然后再传递给 formalArgs
。无论功能是否原始,这都有效。
> # 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"