Ern*_*t A 6 r ellipsis lazy-evaluation
我需要一个接受任意数量的参数的函数,并将它们作为表达式存储在变量中而不进行评估.我设法做到了,match.call但似乎有点"kludgy".
foo <- function(...) {
expr <- match.call()
expr[[1]] <- expression
expr <- eval(expr)
# do some stuff with expr
return(expr)
}
> bla
Error: object 'bla' not found
> foo(x=bla, y=2)
expression(x = bla, y = 2)
Run Code Online (Sandbox Code Playgroud)
为了澄清,我问如何编写一个行为类似的函数expression().我不能expression()直接使用太长时间无法解释的原因.
had*_*ley 16
最惯用的方式是:
f <- function(x, y, ...) {
match.call(expand.dots = FALSE)$`...`
}
Run Code Online (Sandbox Code Playgroud)
使用.from plyr作为原型
foo <- function (...)
{
as.expression(as.list(match.call()[-1]))
}
Run Code Online (Sandbox Code Playgroud)