0
我正在创建一个包,它使用non-standard evaluation来跟踪列的含义。这个包在函数中传递一个数据帧,这些函数执行相同的一组列。非标准评价这一伟大工程:使用非标准评估与公式
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
需要什么样的对象。
我可以解决这个问题,得到如下:'new_lm < - 流明(不公开(选择(DF ,!! xcol))〜unlist(select(df,!! ycol)))'但这样很不雅,问题仍然存在,我不明白非标准评估如何与数据框一起工作 –