在R中,将矢量缩放到单位矢量的最简单方法是什么?
例如,假设
>vec
[1] 1 0 2 1
和
>vec / sqrt(sum(vec^2))
[1] 0.4082483 0.0000000 0.8164966 0.4082483
是它的单位向量。
R中是否有一些内置函数?
答案 0 :(得分:7)
你可以让自己成为一个职能:
scalar1 <- function(x) {x / sqrt(sum(x^2))}
现在只需使用:
> scalar1(vec)
[1] 0.4082483 0.0000000 0.8164966 0.4082483
答案 1 :(得分:2)
ppls
包中包含函数normalize.vector
,它完全符合您的要求。但是,加载包看起来并不比自己输入函数的一行定义简单得多......
包ppls
实现该函数可能意味着没有标准的R函数来实现这一点。 (当然,除非ppls
的作者根本不知道标准函数......)