【发布时间】:2018-12-12 22:39:12
【问题描述】:
我有一个包含两个变量的数据集:
df<- data.frame(var1= rnorm(20, 15, 1.5), var2= rnorm(20, 7.5, 1))
我有一个函数可以用来标准化它们:
normFunc<- function(x){
xAvg<- mean(x)
return(x/xAvg)
}
手动运行该功能可以正常工作,请参阅下面的var1:
df$var1AVG<- normFunc(df$var1)
我想做的是动态地将两个变量传递给函数,使用for循环,将它们分配给数据框并动态命名它们。
【问题讨论】:
-
如果您不介意名称中的下划线
dplyr,您可以使用df %>% mutate_all(funs(AVG=normFunc)) -
你熟悉
lapply吗?听起来像是它的完美用例 -
试试
df[, paste0(names(df), "AVG")] <- lapply(df, normFunc)