如何在R中创建线性变换函数?

时间:2014-02-27 03:31:15

标签: r transformation linear

我正在努力制作一个重新缩放的功能 位于两个参数lower和upper之间的向量。 重新缩放是通过线性变换完成的。

# rescales x to lie between lower and upper
rescale <- function(x, lower = 0, upper = 1){
slope <- (upper-lower)/(which.max(x)-which.min(x))
intercept <- slope*(x-which.max(x))+upper
y <- intercept + slope * x
return(list(new = y, coef = c(intercept = intercept, slope = slope)))
}

我感觉我没有走上正轨。 请给我一些建议,使其正确。

1 个答案:

答案 0 :(得分:2)

这是一个基于此相关Q&A中的逻辑的函数:

rescale <- function(x, from, to) {
  maxx <- max(x)
  minx <- min(x)
  out <- (to - from) * (x - minx)
  out <- out / (maxx - minx)
  out + from
}

> rescale(1:10, 2, 5)
 [1] 2.000000 2.333333 2.666667 3.000000 3.333333 3.666667 4.000000 4.333333
 [9] 4.666667 5.000000

请注意,如果min(x) == max(x)我们将在函数的倒数第二行除以0,则无效。