相关疑难解决方法(0)

如何编写一个R函数来计算数据框中的表达式

R Cognoscenti的难题:假设我们有一个数据框架:

df <- data.frame( a = 1:5, b = 1:5 )
Run Code Online (Sandbox Code Playgroud)

我知道我们可以做的事情

with(df, a)
Run Code Online (Sandbox Code Playgroud)

获得结果的向量.

但是我如何编写一个带有表达式(如aor a > 3)的函数并在内部执行相同的操作.即我想编写一个函数fn,它将数据框和表达式作为参数,并返回在数据框中"作为"环境评估表达式的结果.

没关系,这听起来很人为(我可以with像上面一样使用),但这只是我正在编写的更复杂功能的简化版本.我试过几个变种(使用eval,with,envir,substitute,local,等),但他们没有工作.例如,如果我这样定义fn:

fn <- function(dat, expr) {
  eval(expr, envir = dat)
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

> fn( df, a )
Error in eval(expr, envir = dat) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)

显然,我遗漏了一些关于环境和评估的微妙之处.有没有办法定义这样的功能?

evaluation r lazy-evaluation

9
推荐指数
2
解决办法
3797
查看次数

标签 统计

evaluation ×1

lazy-evaluation ×1

r ×1