On 20-Oct-10 21:27:46, Duncan Murdoch wrote: > On 20/10/2010 5:16 PM, Dimitri Liakhovitski wrote: >> Hello! >> >> I am trying to round the number always up - i.e., whatever the >> positive number is, I would like it to round it to the closest 10 that >> is higher than this number, the closest 100 that is higher than this >> number, etc. >> >> For example: >> x<-3241.388 >> >> signif(x,1) rounds to the closest thousand, i.e., to 3,000, but I'd >> like to get 4,000 instead. >> signif(x,2) rounds to the closest hundred, i.e., to 3,200, but I'd >> like to get 3,300 instead. >> signif(x,3) rounds to the closest ten, i.e., to 3,240, but I'd like to >> get 3,250 instead. >> >> Of course, I could do: >> floor(signif(x,1)+1000) >> floor(signif(x,2)+100) >> floor(signif(x,3)+10) >> >> But it's very manual - because in the problem I am facing the numbers >> sometimes have to be rounded to a 1000, sometimes to a 100, etc. > > Write a function. You have very particular needs, so it's unlikely > there's already one out there that matches them. > Duncan Murdoch
As Duncan and Clint suggest, writing a function is straightforward: for the problem as you have stated it, on the lines of function(x,k){floor(signif(x,k-as.integer(log(x,10)-1))) + 10^k} However, what do you *really* want to happen to 3000? Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <ted.hard...@wlandres.net> Fax-to-email: +44 (0)870 094 0861 Date: 20-Oct-10 Time: 22:55:47 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.