规范数据范围之间的数据/映射

时间:2013-06-11 16:54:13

标签: r

有没有人知道用于在范围之间映射数据的通用R函数?我找不到任何东西,但这似乎是一个非常必要的基本功能。 e.g。

map = function(x, xmin=NULL, xmax=NULL, tmin=0, tmax=1, na.rm=FALSE){
  if(is.null(xmin)) xmin = min(x)
  if(is.null(xmax)) xmax = max(x)
  x.range = xmax - xmin
  t.range = tmax - tmin
  ((x - xmin) / x.range * t.range + tmin)
}

..默认情况下会从输入数据范围标准化为[0,1],但也可以使用自定义输入范围或映射到特定输出:

> v = -5:5
> map(v)
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> map(v, xmin=-10, xmax=10)
 [1] 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75
> map(v, tmax = 500)
 [1]   0  50 100 150 200 250 300 350 400 450 500

我是否重新发明轮子?

1 个答案:

答案 0 :(得分:3)

scale包有一个:

scales::rescale(v)
scales::rescale(v, from=c(-10, 10))