我想将某些查询传递给使用'eval'的较低级别的函数。这里有一个简单的例子:R:将值传递给嵌套函数中的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知道如何处理它,而不管之前有多少嵌套函数级别。
我该怎么做?谢谢!
是身体'f2'你愿意修改的唯一的事情? – flodel 2014-10-10 10:57:59
对不起,我不确定你的意思是...?我可以修改任何f1或f2函数,唯一重要的是它们都与相同的参数相同,其中'q'是我想评估'x'的一般查询。 – Tim 2014-10-10 11:04:36