0
私はnon-standard evaluationを使用して列の意味を追跡するパッケージを作成しています。パッケージは関数間でデータフレームを渡します。さまざまなことが同じ列セットを実行します。非標準の評価はこのために素晴らしい作品:式で非標準的な評価を使用して
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
:
my_select <- function(df, xcol, ycol) {
new_df <- dplyr::select(df, !!xcol, !!ycol)
new_df
}
my_select(mtcars, quo(wt), quo(mpg))
しかし、私は式で動作する機能をしたいと思います。 quo()
、enquo()
、!!
の組み合わせを試してみましたが、基本的な問題は、どのような種類のオブジェクトが必要かわかりません。lm
です。
次のように私はこの問題を回避することができます: 'new_lm < - LM(非公開に(選択(DF 、!xcol))〜unlist(select(df、!! ycol))) ')しかし、これはかなり控えめで、データフレームで非標準的な評価がどのように機能するのか分からないという問題が残っています –