【发布时间】:2012-11-01 11:23:48
【问题描述】:
我需要一个函数,它接受任意数量的参数,并将它们作为表达式存储在一个变量中而不计算它们。我设法用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(),原因太长无法解释。
【问题讨论】:
-
现在看来
foo <- expression会这样做,不是吗? “# do some stuff with expr”是什么意思? -
刚刚发布了我的答案并意识到您的评论是一种更简单的方法
-
看看
plyr中的.函数,它可能会做你想做的事,或者至少为你指明正确的方向 -
您实际上不太可能需要一个表达式对象 - 调用列表通常就足够了。
标签: r lazy-evaluation ellipsis