我正在使用dmgr来创建一个表,我想得到四舍五入[关闭]

9bfwbjaz  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(85)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我正在使用dplyr在R中创建一个表。我想四舍五入到第十位,所以是1.0或2.3。我正在使用以下代码
mutate_if(is.numeric, round, 1)
这种作品;大部分的四舍五入看起来很棒,除了当它应该四舍五入,并把一个零,像一个1. 0它只显示1我应该做什么来解决这个问题?

xzv2uavs

xzv2uavs1#

大概这个问题更多的是关于表的表示,而不是关于舍入值的存储,这些通常是独立的概念。如果要控制输出表中值的格式(即其中kable/kableExtragtformattable、…或者可能只是tibble输出),它的格式,而不是(只是)四舍五入你可能会感兴趣。
下面是一个格式化的tibble列的示例;还要注意最后一个表达式,它显示了数据的存储方式(11.2501而不是1.01.3),这意味着如果您在计算中确实需要舍入值,您仍然应该舍入:

library(dplyr, warn.conflicts = FALSE)

df <- tibble(n = c(1, 1.2, 1.2501, 1234), 
             l = LETTERS[1:4])

# tibble::num -- format a numeric vector
df_rounded <- mutate(df, across(where(is.numeric), \(x) tibble::num(x, digits = 1)))

# how it prints:
df_rounded      
#> # A tibble: 4 × 2
#>           n l    
#>   <num:.1!> <chr>
#> 1       1.0 A    
#> 2       1.2 B    
#> 3       1.3 C    
#> 4    1234.0 D

# how formatted numeric column is represented:
dput(df_rounded$n)
#> structure(c(1, 1.2, 1.2501, 1234), pillar = structure(list(sigfig = NULL, 
#>     digits = 1, label = NULL, scale = NULL, notation = NULL, 
#>     fixed_exponent = NULL, extra_sigfig = NULL), class = c("pillar_num_attr", 
#> "pillar_vctr_attr", "tibble_vec_attr")), class = c("pillar_num", 
#> "pillar_vctr", "vctrs_vctr", "double"))

创建于2023-09-24使用reprex v2.0.2

相关问题