我正在创建一个使用非标准评估来跟踪列的含义的包。该包在函数之间传递一个数据框,这些函数执行不同的操作并执行相同的列集。非标准评估非常适合:
my_select <- function(df, xcol, ycol) {
new_df <- dplyr::select(df, !!xcol, !!ycol)
new_df
}
my_select(mtcars, quo(wt), quo(mpg))
但是,我想要一个适用于公式的函数:
my_lm <- function(df, xcol, ycol) {
new_lm <- lm(!!xcol, !!ycol, data=df)
new_lm
}
my_lm(mtcars, quo(wt), quo(mpg)
返回Error in !xcol : invalid argument type
。我尝试了, 和的各种组合quo()
,但基本问题是我不知道需要什么样的对象。enquo()
!!
lm