R - 从调用对象获取形式

SFu*_*n28 5 r

如何从调用对象获取正式(参数)?formals()似乎只与函数一起使用.

Tom*_*mmy 6

好了,打电话不具有甲醛,只有实际参数......不同的是像一个函数foo <- function(x, y, ..., z=42)可以称为实际一样的参数foo(42, bar=13).

...但是获取参数可以这样做:

a <- call('foo', a=42, 13)
as.list(a)[-1]
#$a
#[1] 42
#
#[[2]]
#[1] 13
Run Code Online (Sandbox Code Playgroud)

...另一方面,你通常(并不总是)找到实际的功能并找到它的形式:

a <- quote(which(letters=='g'))
formals(match.fun(a[[1]]))
#$x
#
#$arr.ind
#[1] FALSE
#
#$useNames
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

如果找不到该功能,你需要添加一些错误处理(与foo上面的调用一样)......

  • 您不必强制调用列表 - 只要您记住第一个元素是函数,您就可以将其作为列表使用.你也可能想要`match.call`而不是`match.fun` - 这样你就可以组合默认参数和提供的参数. (2认同)