在R中,如何创建一个函数,使向量中的所有数字重新缩放,其中Inf变为1,-Inf变为0?

3
我是R的初学者,有一个任务需要创建一个函数,使所有数字被重新缩放,将正无穷映射为1,负无穷映射为0。我知道如何进行重新缩放,只是不知道如何添加到函数中,以使正无穷变成1,负无穷变成0。如果有人能够指导我正确的方向或让我知道在R中哪些命令可以实现这一点,我将不胜感激!
以下是我的代码:
rescale01<-function(x){  
   rng<-range(x, na.rm=TRUE, finite=TRUE)
    (x-rng[1])/(rng[2]-rng[1])
  }

感谢您的帮助。


刚刚意识到我在早期版本中打了一个错字。我想将 -Inf 映射为 0,将 Inf 映射为 1。 - aevans872
1个回答

1
你可以尝试使用 atan
f <- function(x) 0.5+atan(x)/pi

几乎:“Inf被映射到1,-Inf被映射到-1”,您的函数颠倒了限制并从0到1。2 * atan(x)/ pi是正确的函数。点赞,但请更改它。 - Rui Barradas
1
@RuiBarradas 感谢您的提醒!那里有一个打错字,但现在已经修正了。 - ThomasIsCoding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接