我有以下数据框
df <- data.frame(total=100,a=5,b=5)
Run Code Online (Sandbox Code Playgroud)
我想对每一列应用相同的功能。例如,通过划分第一列来划分所有列
df <- df/df$total
Run Code Online (Sandbox Code Playgroud)
但是,我想用 mutate_all 来做
我的代码是这样的
df <- data.frame(total=100,a=5,b=5) %>% mutate_all(list(~./total))
Run Code Online (Sandbox Code Playgroud)
这没有给我想要的输出。我究竟做错了什么?
total是你的数据框中的第一列,mutate_all它total首先被除以,变成 1。然后其他列被除以 1。如果total是最后一列,我认为你的语法会起作用,但依赖它可能不安全在那。最好使用mutate_at和排除total来避免这种情况:
data.frame(a=5,b=5,total=100) %>%
mutate_at(vars(-total), list(~./total))
Run Code Online (Sandbox Code Playgroud)