一个非常简单的问题,但让我傻眼了。
我有一个表,并尝试使用 mutate_all (或另一个 dplyr 函数)将每列四舍五入到小数点后两位。我知道这可以通过某些应用函数来完成,但我喜欢 dplyr/tidyverse 框架。
DF = data.frame(A = seq(from = 1, to = 2, by = 0.0255),
B = seq(from = 3, to = 4, by = 0.0255))
Rounded.DF = DF%>%
mutate_all(funs(round(digits = 2)))
但这不起作用,只会在每列中给我一个 2。想法?
最佳答案
您需要在 round 函数中添加一个“点”。点是一个占位符,用于表示 mutate_all 应放置您尝试操作的每一列的位置。
Rounded.DF = DF%>%
mutate_all(funs(round(., digits = 2)))
为了使其更直观,您可以编写与自定义函数完全相同的内容,然后在 mutate_all 中引用该函数:
round_2_dgts <- function(x) {round(x, digits = 2)}
Rounded.DF = DF%>%
mutate_all(funs(round_2_dgts))
关于r - 将 mutate 应用于 dplyr 中的多列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51870473/