R

时间:2015-08-12 12:58:46

标签: r

非常基本,但谷歌搜索没有得出答案。有没有办法截断数字值而不用舍入它?

例如:

vars <- c(23.4567, 45.6795, 34.5670)

我希望输出简单地抛出最后两位有效数字,但不是输出的四舍五入。我想要的是:

vars <- c(23.45, 45.67, 34.56)

但是最常见的做法最终会四舍五入(当然是圆形,但也是 signif

round(vars, 2)
  

[1] 23.46 45.68 34.57

signif(vars, digits=4)
  

[1] 23.46 45.68 34.57

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

2 个答案:

答案 0 :(得分:4)

您可以使用floor()功能,只需一点额外的帮助。

floor(100*vars)/100

答案 1 :(得分:4)

您可以尝试使用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