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.liakhovit...@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.hard...@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.hard...@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@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? ______________________________________________ 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.