我正在尝试使用 tidyeval(非标准评估)围绕“lm”编写一个函数。使用基本 R NSE,它可以工作:
lm_poly_raw <- function(df, y, x, degree = 1, ...){
lm_formula <-
substitute(expr = y ~ poly(x, degree, raw = TRUE),
env = list(y = substitute(y),
x = substitute(x),
degree = degree))
eval(lm(lm_formula, data = df, ...))
}
lm_poly_raw(mtcars, hp, mpg, degree = 2)
但是,我还没有想出如何使用tidyeval
and来编写这个函数rlang
。我认为substitute
应该替换为 beenquo
和 eval !!
。Hadley 的 Adv-R 中有一些提示,但我无法弄清楚。