在R

时间:2017-06-25 02:44:03

标签: r function expression

我正在尝试编写一个接受由一个或多个列名组成的表达式的函数,如下所示:

data <- data.frame(a = c(1 , 2 , 3) , b = c(1 , 2 , 3))
beans <- function (data , expr) {
    with(data , expr)
}

所需的输出类似于:

beans(data , expression(a + b))
# [1] 2 4 6

但是这会返回

expression(a + b)

理想情况下,解决方案也允许将单个列用作参数,例如

beans(data , a)
# [1] 1 2 3

1 个答案:

答案 0 :(得分:3)

你需要eval(甚至在函数之外):

with(data, eval(expr))
eval(expr, envir = data)