在R中舍入,可能出错

时间:2015-01-07 15:16:38

标签: r rounding

我总是被告知,对于数字1,2,3和4,你向下打圆,而对于5,6,7,8和9你向上打圆。那么有人可以向我解释为什么在6.5中的R中使用roundsignif它会将其舍入到6 ??

round(6.5)
[1] 6
signif(6.5)
[1] 6

当我给出一个.5数字时,我需要将我的值向上舍入。有人可以告诉我怎么做吗?

1 个答案:

答案 0 :(得分:1)

我这样做了:

round2 <- function(x) {
  index <- gregexpr(pattern='\\.', as.character(x)  ) #find the index of the dot
  if ( substr(as.character(x), index[[1]]+1, index[[1]]+1 ) =='5' ) round(x+0.1) else round(x) #check if the first decimal is a 5
}

> round2(5.5)
[1] 6
> round2(255.5)
[1] 256
> round2(-55.5)
[1] -56

这似乎在任何情况下都有效。