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)))'但這樣很不雅,問題仍然存在,我不明白非標準評估如何與數據框一起工作 –