Si vous voulez juste pour arrondir jusqu'à la prise électrique la plus proche de 10, puis il suffit de définir:
roundUp <- function(x) 10^ceiling(log10(x))
Cela fonctionne également lorsque x est un vecteur:
> roundUp(c(0.0023, 3.99, 10, 1003))
[1] 1e-02 1e+01 1e+01 1e+04
..mais si vous voulez arrondir à un "gentil", numéro, vous devez d'abord définir ce qu'est un "gentil", le numéro est. La suite permet jusqu'à définir le "gentil" comme un vecteur avec des belles valeurs de base de 1 à 10. La valeur par défaut est le même nombres de plus de 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]]]]
}
Le ci-dessus ne fonctionne pas, lorsque x est un vecteur - trop tard dans la soirée, tout de suite :)
> 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
[[EDIT]]
Si la question est comment faire pour arrondir une valeur la plus proche (10 ou 100), puis James réponse semble la plus appropriée. Ma version vous permet de prendre n'importe quelle valeur et automatiquement autour d'elle un assez "sympa" de la valeur. Quelques autres bons choix de le "gentil" vecteur ci-dessus sont: 1:10, c(1,5,10), seq(1, 10, 0.1)
Si vous avez une plage de valeurs de votre parcelle de terrain, par exemple [3996.225, 40001.893]
puis la manière automatique et doit prendre en compte à la fois de la taille de la portée et de l'ampleur des nombres. Et comme indiqué par le Hadley, la jolie() la fonction peut-être ce que vous voulez.