我正在尝试编写一个函数,该函数将数据框和函数名称作为参数。当我尝试使用标准 R 语法编写函数时,我可以使用@hadley 在http://adv-r.had.co.nz/Computing-on-the-language.htmleval
中的建议获得良好的结果substitute
> df <- data.frame(y = 1:10)
> f <- function(data, x) {
+ out <- mean(eval(expr = substitute(x), envir = data))
+ return(out)
+ }
> f(data = df, x = y)
[1] 5.5
现在,当我尝试使用%>%
运算符编写相同的函数时,它不起作用:
> df <- data.frame(y = 1:10)
> f <- function(data, x) {
+ data %>%
+ eval(expr = substitute(x), envir = .) %>%
+ mean()
+ }
> f(data = df, x = y)
Show Traceback
Rerun with Debug
Error in eval(expr, envir, enclos) : objet 'y' introuvable
>
如何将管道运算符与eval
and结合使用substitute
?这对我来说似乎真的很棘手。