[R] rounding up (always)

jim holtman jholtman at gmail.com
Thu Oct 21 04:50:23 CEST 2010


why don't you just use 'pretty'

> pretty(c(-1225, 2224))
[1] -1500 -1000  -500     0   500  1000  1500  2000  2500
> pretty(c(-4.28, 6.45))
[1] -6 -4 -2  0  2  4  6  8
>


On Wed, Oct 20, 2010 at 8:38 PM, Dimitri Liakhovitski
<dimitri.liakhovitski at gmail.com> wrote:
> Thank you for your help, everyone.
> Actually, I am building a lot of graphs (in a loop) but the values on
> the y axes from graph to graph could range from [-5; 5] to [-10,000;
> 10,000].
> So, I am trying to create ylim ranging from ymin to ymax such that
> they look appropriate for the range.
> For example, if we are taking the actual range from -4.28 to 6.45, I'd
> like the range to be -5 to 7.
> But if the range is from -1225 to 2248, then I'd like it to be from
> -1500 to 2500 or from -2000 to 3000.
> Hence, my original question.
> Dimitri
>
> On Wed, Oct 20, 2010 at 5:55 PM, Ted Harding <ted.harding at wlandres.net> wrote:
>> 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.harding at wlandres.net>
>> Fax-to-email: +44 (0)870 094 0861
>> Date: 20-Oct-10                                       Time: 22:55:47
>> ------------------------------ XFMail ------------------------------
>>
>
>
>
> --
> Dimitri Liakhovitski
> Ninah Consulting
> www.ninah.com
>
> ______________________________________________
> R-help at 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?



More information about the R-help mailing list