12

现在,关于四舍五入和重要性的SO有一些非常相似的问题,但没有解决我的问题。这里是:

如何四舍五入随机出现的数字,如下所示:

data <- c(152.335, 39.431, 21.894)

我想让它们像这样四舍五入:

c(150,40,20)

我努力了:

print(formatC(signif(data,digits=2), digits=2,format="f"))

输出:

[1] "150.00" "39.00"  "22.00"

上述命令要求我将 更改digits=为 1 或 2 以获得所需的结果。但是,我想要一个适合所有命令的全局命令。谢谢。

4

2 回答 2

27

?round

四舍五入到负数意味着四舍五入到十的幂,因此例如'round(x,digits = -2)'四舍五入到最接近的一百。

所以,

data <- c(152.335, 39.431, 21.894)
round(data, -1)
#[1] 150  40  20
于 2013-08-28T16:06:09.453 回答
3

你实际上想要一个不同的论点signif。这似乎可以解决问题——第一个参数有 2 个数字,最后两个参数有一个:

R> dat <- c(152.335, 39.431, 21.894)
R> dat
[1] 152.335  39.431  21.894
R> signif(dat, digits=c(2,1,1))
[1] 150  40  20
R> 

你可以通过类似的东西来概括这一点

R> signif(dat, digits=floor(log10(dat)))
[1] 150  40  20
R> 
于 2013-08-28T16:05:03.003 回答