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.pi...@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@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. > ______________________________________________ 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.