我想將某些查詢傳遞給使用'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