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
我想使用以下公式在 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