r - 将 mutate 应用于 dplyr 中的多列和行

标签 r rounding dplyr

一个非常简单的问题,但让我傻眼了。

我有一个表,并尝试使用 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/

相关文章:

Python:对float精度的限制

r - 将一个整数散布在多行中,次数与它除以一个常数的次数相同

r - 从 Tibble Columns 创建一个列表

c++ - 如何使用 RcppEigen 在 C 代码中编译函数

r - 使用 data.table 进行内存分析

R 读取 zip 数据文件而不解压缩它(信息丢失)

java - 为什么 % 向上舍入

c - 为什么数字 51444.325061 不四舍五入到 51444.325 到小数点后 3 位?我想在c编程中四舍五入这个数字

使用查找表使用 dpylr 重新编码值

r - 如何使用 dplyr 函数在数据表中添加新列?