R: 在嵌套函数中将值传递给eval



我想将一些查询传递给使用'eval'的较低级别函数。这里有一个简化的例子:

f1 <- function(x, q) eval(substitute(q), envir=x)
f2 <- function(x, q) f1(x, q)

发生了什么:

> x <- data.frame(a=1:5)
> f1(x, a<3)
[1]  TRUE  TRUE FALSE FALSE FALSE
> f2(x, a<3)
Error in eval(expr, envir, enclos) : object 'a' not found

而我希望f2产生与f1相同的输出。参数"q"是将在"x"上求值的某个常规查询。我保持示例的简单性和通用性,但我想将它的行为扩展到更复杂的函数和查询上。对我来说,重要的是如何"传递"查询"q",以便eval知道如何处理它,无论以前有多少级别的嵌套函数。

我该怎么做?谢谢

你可以做:

f1 <- function(x, q) eval(substitute(q), envir=x)
f2 <- function(x, q) eval(substitute(f1(x, q)))
y <- data.frame(a=1:5)
f1(y, a<3)
f2(y, a<3)

因为您只定义了x。您需要:

> f2(x, x$a<3)
> [1]  TRUE  TRUE FALSE FALSE FALSE

相关内容

  • 没有找到相关文章

最新更新