가장 가까운 10의 거듭 제곱으로 반올림하려면 다음을 정의하십시오.
roundUp <- function(x) 10^ceiling(log10(x))
이것은 실제로 x가 벡터 일 때도 작동합니다.
> roundUp(c(0.0023, 3.99, 10, 1003))
[1] 1e-02 1e+01 1e+01 1e+04
.. 그러나 "좋은"숫자로 반올림하려면 먼저 "좋은"숫자가 무엇인지 정의해야합니다. 다음은 "nice"를 1부터 10까지의 좋은 기본 값을 가진 벡터로 정의 할 수있게합니다. 기본값은 짝수에 5를 더한 값으로 설정됩니다.
roundUpNice <- function(x, nice=c(1,2,4,5,6,8,10)) {
if(length(x) != 1) stop("'x' must be of length 1")
10^floor(log10(x)) * nice[[which(x <= 10^floor(log10(x)) * nice)[[1]]]]
}
x가 벡터 일 때는 위의 내용이 작동하지 않습니다. 지금은 너무 늦은 저녁입니다. :)
> roundUpNice(0.0322)
[1] 0.04
> roundUpNice(3.22)
[1] 4
> roundUpNice(32.2)
[1] 40
> roundUpNice(42.2)
[1] 50
> roundUpNice(422.2)
[1] 500
[[편집하다]]
질문이 지정된 가장 가까운 값 (예 : 10 또는 100)으로 반올림하는 방법이라면 James 대답 이 가장 적절 해 보입니다. 내 버전을 사용하면 어떤 값이든 합리적으로 "좋은"값으로 자동 반올림 할 수 있습니다. 위의 "nice"벡터의 다른 좋은 선택은 다음과 같습니다.1:10, c(1,5,10), seq(1, 10, 0.1)
예를 들어 플롯에 값 범위가있는 경우 [3996.225, 40001.893]
자동 방법은 범위의 크기와 숫자의 크기를 모두 고려해야합니다. 로 그리고 해들리에 의해 지적 의 pretty()
기능은 당신이 원하는 수 있습니다.