对数据帧中的所有变量执行相同的变异

Ril*_*ley 2 r dplyr

我有一个28变量的数据框,并且我想用相同的功能对同一数据框中的每个变量进行突变。例如,为数据框中的每个变量添加一个额外的列,其中新列是变量的日志。例如,如果我有

dataframe <- data.frame(X=data1, Y=data2, Z=data3)
Run Code Online (Sandbox Code Playgroud)

我想要一个包含XY和Z以及log(X),log(Y)和log(Z)的新数据框。这很容易使用

mutate(dataframe, log(X)); mutate(dataframe(log(Y))
Run Code Online (Sandbox Code Playgroud)

等等,但是对于28个变量(以及每个变量的多次转换-我也想获得sqrt和^ 2)有点太多了。我知道mutate_all的存在,但是由于某些原因,当我尝试使用mutate_all时,它将替换所有变量,而不是添加新变量。

akr*_*run 6

我们可以在中使用mutate_all并指定后缀,funs以便将其创建为新列。否则,将原始函数替换为输出

dataframe %>%
        mutate_all(funs(log = log(.))
Run Code Online (Sandbox Code Playgroud)