3

混乱を招いて申し訳ありませんが、最終的に、最初に投稿した例 (ページの下部) は、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)

4

2 に答える 2