我正在尝试在一个函数内获取全局环境中参数的名称。我知道可以使用substitute来获取命名参数的名称,但我想要能够对...参数执行相同的操作。我已经在第一个...元素上让它工作了,但是无法弄清楚如何对其余的元素执行相同的操作。有没有想法可以使其按预期工作。
foo <- function(a,...)
{
print(substitute(a))
print(eval(enquote(substitute(...))))
print(sapply(list(...),function(x) eval(enquote(substitute(x)),env=.GlobalEnv)))
}
x <- 1
y <- 2
z <- 3
foo(x,y,z)
x
y
[[1]]
X[[1L]]
[[2]]
X[[2L]]
match.call()
函数 - 我之前不知道还有expand.dots
参数。 - Gavin Simpsonnames(sapply(match.call(), deparse))[-1]
对于我的需求非常好用,可以获得一个参数名称的字符向量([-1]
会去除函数本身的名称)。 - sckott