我需要一个函数,该函数接受任意数量的参数并将其存储在变量中作为表达式,而不对其求值。我设法用match.call
做到了,但似乎有点“笨拙”。
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)
澄清度
为了澄清,我在问如何编写一个类似于
expression()
的函数。出于无法解释的原因,我无法直接使用expression()
。
最佳答案
最惯用的方式是:
f <- function(x, y, ...) {
match.call(expand.dots = FALSE)$`...`
}
关于r - 如何在不评估R的情况下扩展省略号(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353847/