混乱を招いて申し訳ありませんが、最終的に、最初に投稿した例 (ページの下部) は、tidyeval が mutate でどのように機能するかを理解するのに役立たなかったため、新しい例を追加しています。
3 つの引数を取る関数を作成したいと思います。
- データフレーム
- 変更する列
- 変更されている値を置き換える (データフレームからの) 変数
たとえば、mpg
の値をからの値に置き換えるには、carb
これを試しました:
I tried this
colToX <- function(dt, ..., repl) {
cols <- quos(...)
repl <- quo(repl)
mutate_at(dt, vars(!!!cols), funs(function(x) !!repl))
}
colToX(mtcars, mpg, repl = carb)
次の理由で機能しません:
mutate_impl(.data、dots) のエラー: 列
mpg
はサポートされていないタイプの関数です
私の最初の例(@MrFlickと@Userの両方がこれでうまく機能します):
たとえば、以下のものはmutate()
、渡された変数にすべて 1 を割り当てる必要があります...
colTo1 <- function(dt, ...) {
col <- quo(...)
mutate(mtcars, !!col := 1)
}
colTo1(mtcars, mpg)
エラー: LHS は名前または文字列でなければなりません
最終的に、出力は次のようになりますmutate(mtcars, mpg = 1)