有没有办法得到all函数内部的函数参数?
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
并返回结果。
Update:一个与 S3 方法相关的有趣问题。我创建了一个新的 S3 方法,并使用了 @Ferdinand.kraft 的答案。as.list(environment(), all.names=TRUE)
all.names 参数使名称以 a 开头.
在列表中。事实证明,dispatch 方法向函数环境添加了几个参数,包括.Generic
.Class
.Method
和其他几个。如果您将这些传递给中的函数,这可能会导致问题do.call
。其他答案之一可能是一个更好的全面解决方案,但我喜欢它的简单性as.list(environment())
.
您还可以在函数开头返回环境:
xf <- function (a, b="Hi", c=TRUE) {
as.list(environment(), all=TRUE)
}
Result:
> xf(a=1)
$a
[1] 1
$b
[1] "Hi"
$c
[1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)