r - 在 R 中截断但不舍入

标签 r

这个问题在这里已经有了答案:





Truncate decimal to specified places

(3 个回答)


6年前关闭。




非常基本,但谷歌搜索没有产生答案。有没有办法在不四舍五入的情况下截断数值?

例如:

vars <- c(23.4567, 45.6795, 34.5670)

我希望输出简单地去掉最后两个有效数字,而不是四舍五入。我想要的是:
vars <- c(23.45, 45.67, 34.56)

但最常见的方法是四舍五入(当然,圆形,但也意味着:
round(vars, 2)

[1] 23.46 45.68 34.57


signif(vars, digits=4)

[1] 23.46 45.68 34.57



如果这里已经解决了这个问题,请指出我正确的方向,但找不到它特定于 R...

最佳答案

你可以试试 floor()

vars <- floor(vars*100)/100

但是,此解决方案假定所有值都是正数,如 floor()舍入到下一个较小的整数。如果有负数,这种方法可能会产生不良结果:
> floor(-23.441*100)/100
#[1] -23.45

因此,更通用的解决方案是使用 trunc() :
vars <- trunc(vars*100)/100

这将删除前两位小数后的任何数字,它也适用于负数:
> trunc(-23.441*100)/100
#[1] -23.44

关于r - 在 R 中截断但不舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31965975/

相关文章:

r - 如何从已排序矩阵列的一部分中获取列名?

R 使用变量的值作为数据框列名

R,dplyr - group_by() 和arrange() 的组合不会产生预期的结果?

r - 以科学记数法保留格式宽度

r - naiveBayes 使用单词矩阵和 3 个以上的类进行预测

r - 为什么 'names' 的属性表现不同?

r - 分析完成后使标签可见

r - 将日期时间数据与 ggplot scale_colour_gradient 一起使用

r - 添加 ggplot 中列下方使用的样本计数

r - 在函数中使用嵌套变量