2

我有以下数据框

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))

这没有给我想要的输出。我究竟做错了什么?

4

1 回答 1

5

total是您的数据框中的第一列,并在mutate_all其中除以total第一列,变为 1。然后其他列仅除以 1。如果total是最后一列,我认为您的语法会起作用,但依赖它可能不安全在那。最好使用mutate_at和排除total来避免这种情况:

data.frame(a=5,b=5,total=100) %>% 
    mutate_at(vars(-total), list(~./total))
于 2019-07-10T00:24:38.853 回答