我正在尝试编写一个函数,该函数的参数是数据框和函数名称。当我尝试使用标准R语法编写函数时,我可以通过使用@hadley在http://adv-r.had.co.nz/Computing-on-the-language.html中推荐的
现在,当我尝试使用
如何在使用管道操作符的同时结合eval和substitute函数?这对我来说似乎非常棘手。
eval
和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和substitute函数?这对我来说似乎非常棘手。
dplyr
函数使用的非标准评估(Non Standard Evaluation)引起的。 - asifzuba