6
dplyr :: mutate_eachですべての列に変換を適用したいと思います。mutate_eachからカラム名を渡す
library(dplyr)
mult <- function(x,m) return(x*m)
mtcars %>% mutate_each(funs(mult(.,2))) # Multiply all columns by a factor of two
ただし、変換には列名に応じたパラメータが必要です。したがって、列名は、追加の引数として関数に渡さなければならない
named.mult <- function(x,colname) return(x*param.A[[colname]])
例:列名がmutate_each中に失われるので、
param.A <- c()
param.A[names(mtcars)] <- seq(length(names(mtcars)))
param.A
# mpg cyl disp hp drat wt qsec vs am gear carb
# 1 2 3 4 5 6 7 8 9 10 11
:異なる因子により列毎に乗算現在、遅延評価リストをmutate_(SE版)に渡すことで、この問題を回避しています。(SE版)
library(lazyeval)
named.mutate <- function(fun, cols) sapply(cols, function(n) interp(~fun(col, n), fun=fun, col=as.name(n)))
mtcars %>% mutate_(.dots=named.mutate(named.mult, names(.)))
は動作しますが、.nameのような特別な変数があり、列名はです。各列ごとの実行について?だから、私は何かをすることができる
mtcars %>% mutate_each(funs(named.mult(.,.name)))