[R] arbitrary scaling

Gabor Grothendieck ggrothendieck at gmail.com
Mon Mar 8 15:47:37 CET 2010


Perhaps approx:

   approx(range(x), c(0.5, 1), xout = x)$y

A one-linear, but longer, is also possible based on lm:

  predict(lm(c(0.5, 1) ~ x, data.frame(x = range(x))), data.frame(x))


On Mon, Mar 8, 2010 at 9:37 AM, Petr PIKAL <petr.pikal at precheza.cz> wrote:
> Hi all
>
> I know I probably reinvented wheel but it was maybe simpler then search in
> docs or ask help before I did my part.
>
> I made a simple function which can scale a vector between chosen values.
> Do anybody know simpler/better approach?
>
> myscale<-function(x, miny=0.5, maxy=1) {
> rx <- diff(range(x, na.rm=T))
> minx <- min(x, na.rm=T)
> tga <- (maxy-miny)/rx
> b <- miny - tga* minx
> res <- x*tga+b
> res
> }
>
> x <- c(5,30,50)
>
> myscale(x)
> [1] 0.5000000 0.7777778 1.0000000
>
> Thank you
>
> Regards
> Petr
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list