我有tibble
具有与此相似的特征:
set.seed(123)
df <- tibble(
x = sample(LETTERS[1:3],10,T),
y = rdunif(10,7.5),
z = rdunif(10,7.5)
)
哪个收益率:
# A tibble: 10 x 3
x y z
<chr> <dbl> <dbl>
1 A 8.00 7.00
2 C 4.00 6.00
3 B 6.00 5.00
4 C 5.00 8.00
5 C 1.00 5.00
6 A 7.00 6.00
7 B 2.00 5.00
8 C 1.00 5.00
9 B 3.00 3.00
10 B 8.00 2.00
我想使用mutate_if()
对数字变量进行舍入;我正在使用此代码。
df %>%
mutate_if(is.numeric, funs(round(., 1)))
其产生与上述相同(无四舍五入)。
# A tibble: 10 x 3
x y z
<chr> <dbl> <dbl>
1 A 8.00 7.00
2 C 4.00 6.00
3 B 6.00 5.00
4 C 5.00 8.00
5 C 1.00 5.00
6 A 7.00 6.00
7 B 2.00 5.00
8 C 1.00 5.00
9 B 3.00 3.00
10 B 8.00 2.00
我没有收到任何警告,代码似乎运行正常。我只是没有得到我期待的答案。
ANSWER
我没有问正确的问题。我希望限制tibble
中数字列的位数。我在baseR中寻找sprintf
函数。
df %>%
mutate_if(is.numeric, funs(sprintf("%0.1f", .)))
答案 0 :(得分:1)
设置打印tibbles时的有效位数
options(pillar.sigfig=1)
控制tibble打印的不同options
我生成了新的数据,我在之前和之后展示了这些数据。设置选项后
# # A tibble: 10 x 3
# x y z
# <chr> <dbl> <dbl>
# 1 A 0.0458 0.665
# 2 B 0.442 0.0948
# 3 B 0.799 0.384
# 4 B 0.122 0.274
# 5 A 0.561 0.815
# 6 A 0.207 0.449
# 7 A 0.128 0.810
# 8 B 0.753 0.812
# 9 A 0.895 0.794
# 10 C 0.374 0.440
# # A tibble: 10 x 3
# x y z
# <chr> <dbl> <dbl>
# 1 A 0.05 0.7
# 2 B 0.4 0.09
# 3 B 0.8 0.4
# 4 B 0.1 0.3
# 5 A 0.6 0.8
# 6 A 0.2 0.4
# 7 A 0.1 0.8
# 8 B 0.8 0.8
# 9 A 0.9 0.8
# 10 C 0.4 0.4