私たちは、このよりダイナミックな
library(tidyverse)
f1 <- function(data, columns){
data %>%
transmute_at(columns, log) %>%
rename_all(funs(paste("log", columns, sep="_"))) %>%
bind_cols(data, .)
}
res <- f1(mtcars, cols)
head(res, 3)
# mpg cyl disp hp drat wt qsec vs am gear carb log_disp log_wt log_drat
#1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 5.075174 0.9631743 1.360977
#2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 5.075174 1.0560527 1.360977
#3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 4.682131 0.8415672 1.348073
それともmutate_at
f2 <- function(data, columns){
data %>%
mutate_at(columns, funs(log = log(.))) %>%
rename_at(vars(matches('log')), funs(sub('(\\w+)_(\\w+)', "\\2_\\1", .)))
}
f2(mtcars, cols)
を使用して機能を変更するために
tidyverse
を使用することができます
注:どちらのdplyr
ソリューションも標準dplyr
構文を使用しています
mtcars [paste0( "log_"、cols)] < - log(mtcars [cols]) ' –
答えがありがとう、私はいくつかの動的適用を考えていた...しかし、 ! – user3507584