r - 如何在 R 中对非双数进行舍入?

标签 r rounding

我想在 R 中对一些整数进行舍入。当然,我已经知道 round() 方法,但这似乎只适用于数据类型“double”或“float”。我如何舍入没有任何小数值的普通整数,例如

1445 --> 145

1526 --> 153

2474 --> 247

最佳答案

您可以添加 5 并使用 %/% .

x <- c(1445L, 1526L, 2474L)
(x + 5L) %/% 10L
#[1] 145 153 247

基准:

x <- sample(1e5)
bench::mark(GKi =  (x + 5L) %/% 10L,
            Mael = round(x + .5, digit = -1) / 10,
            user2554330 = floor(x/10 + 0.5)
            )
#  expression       min   median `itr/sec` mem_alloc `gc/sec` n_itr  n_gc total…¹
#  <bch:expr>  <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl> <int> <dbl> <bch:t>
#1 GKi         362.34µs 364.87µs     2463.  390.67KB     21.0  1172    10   476ms
#2 Mael          4.06ms   4.21ms      237.    1.53MB     10.6   112     5   472ms
#3 user2554330 329.37µs 335.93µs     2505.   781.3KB     46.2  1139    21   455ms

使用(x + 5L) %/% 10Lfloor(x/10 + 0.5)目前速度相同,但是 %/%使用更少的内存。
(x + 5L) %/% 10L返回一个整数和 floor(x/10 + 0.5)一个数字。

x <- 1234L
str(x)
# int 1234

str((x + 5L) %/% 10L)
# int 123

str(floor(x/10 + 0.5))
# num 123

关于r - 如何在 R 中对非双数进行舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74014879/

相关文章:

r - 使用Selenium和docker工具箱下载文件

powershell - 如何在 PowerShell 中正确舍入数字

将 R 中的数字四舍五入到指定的位数

php - 如何四舍五入到下一个偶数?

c# - 移动到圆形区域,然后捕捉到网格?

r - 超正方体 "Error in pixCreateNoInit: pix_malloc fail for data"

r - R 中的 INTNX 等价物

java - 将 double 转换为带有一位小数点和一位小数的 double?

r - 将稀疏矩阵转换为完整矩阵 - R

r - 在 R 中创建热图?