有没有办法从函数中获取所有函数参数?
match.call()
不返回设置了默认值但未覆盖的参数。例如:
xf <- function (a, b="Hi", c=TRUE) {
print(as.list(match.call(expand.dots=FALSE)))
}
>xf(3)
[[1]]
xf
$a
[1] 3
我正在编写一个带有调用现有函数的函数的包,但我希望能够设置不在现有函数上的默认值。(我打算使用来自的列表match.call
,将其传递给另一个函数do.call
并返回结果。
更新:一个与 S3 方法相关的有趣问题。我创建了一个新的 S3 方法,并使用了@Ferdinand.kraft 的答案。as.list(environment(), all.names=TRUE)
all.names 参数保留列表中以 a 开头.
的名称。事实证明,方法调度向函数环境添加了几个参数,包括.Generic
.Class
.Method
和其他几个参数。如果将这些传递给do.call
. 其他答案之一可能是一个更好的全方位解决方案,但我喜欢as.list(environment())
.