我正在尝试编写一个接受由一个或多个列名组成的表达式的函数,如下所示:
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
答案 0 :(得分:3)
你需要eval
(甚至在函数之外):
with(data, eval(expr))
eval(expr, envir = data)