非常基本,但谷歌搜索没有得出答案。有没有办法截断数字值而不用舍入它?
例如:
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 ...
答案 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