R:使用 dplyr 在所有列中使用特定公式舍入数据框

R: Round a data frame with a specific formula across all columns with dplyr

我想使用以下公式在 R 中舍入我的整个数据框:

format(round(Df$`p-value`, digits=2), nsmall = 2)

现在,上面的代码仅用于一列(只是为了向您展示)。

我知道当我想为我的整个数据框使用公式时 dplyr 很容易使用,因为有 across() 函数。 我尝试了以下方法:

Df %>%
mutate(across(format(round(digits=2), nsmall = 2)))

但是,我收到一条错误消息,提示“缺少参数“x”,没有默认值”。 我想我需要对代码做一些小的调整,但我不知道我需要调整什么?有人可以帮我吗?

谢谢。

您忘记了其中的参数 x。 R完全正确。 您需要在要转换的函数中获取数据框(参数 x)。在这种情况下,一个“。”代表数据帧,因为它的 dplyr。你 mutate(across) 对我不起作用,所以我决定使用 mutate_all,它完美地完成了工作。

A %>%    mutate_all(~format(round(., digits=1), nsmall = 2))

这应该可以做到。您需要按名称指定 .fns 参数,否则公式将按位置与跨 .cols.

的第一个参数匹配

DF %>% mutate( across( .fns = ~ format(round(.x, digits = 2), nsmall = 2) )

首先我创建了一些随机数据:

Df <- data.frame(v1 = c(1.21,3.21,2.2,1.11),
                 v2 = c(1.333, 2.22,1.1111,2.1))

您可以使用以下代码:

library(dplyr)
Df %>%
  mutate(across(everything(~format(round(digits=2), nsmall = 2))))

输出:

    v1     v2
1 1.21 1.3330
2 3.21 2.2200
3 2.20 1.1111
4 1.11 2.1000