使用tidyverse和mutate_all将相同的函数应用于每列

时间:2019-07-10 00:16:17

标签: r dplyr

我有以下数据框

df <- data.frame(total=100,a=5,b=5)

我想对每列应用相同的功能。例如,将第一列除以所有列

df <- df/df$total

但是,我想使用mutate_all

我的代码就是这样

df <- data.frame(total=100,a=5,b=5) %>% mutate_all(list(~./total))

没有给我想要的结果。我在做什么错?

1 个答案:

答案 0 :(得分:4)

total是数据框中的第一列,在mutate_all中它首先被total除以成为1,然后将其他列除以1。如果{{ 1}}是最后一栏,我认为您的语法可以使用,但是依靠它可能并不安全。最好使用total并排除mutate_at来避免这种情况:

total